Update content of files

This commit is contained in:
GitHub Action 2024-01-20 18:56:51 +00:00
parent 0e8ccf8d53
commit 6d7f0d7365
4 changed files with 208 additions and 208 deletions

View file

@ -49,7 +49,7 @@ An error is characterized by several parameters:</p>
<h4><a class="anchor" href="#error-type" id="error-type" name="error-type"><i class="anchor-icon"></i></a>Error Type</h4>
<p>A string literal in the form of <code>/[A-Z_0-9]+/</code>, which summarizes the problem. For example, <code>AUTH_KEY_UNREGISTERED</code>. This is an optional parameter.</p>
<h4><a class="anchor" href="#error-database" id="error-database" name="error-database"><i class="anchor-icon"></i></a>Error Database</h4>
<p>A full human-readable JSON list of RPC errors that can be returned by all methods in the API can be found <a href="/file/400780400444/1/nO-SBJpvLOY.110846.json/0945327771728eec5f">here »</a>, what follows is a description of its fields: </p>
<p>A full human-readable JSON list of RPC errors that can be returned by all methods in the API can be found <a href="/file/400780400203/4/Fur14cB2JPY.110250.json/21edc77f71292e9672">here »</a>, what follows is a description of its fields: </p>
<ul>
<li><code>errors</code> - All error messages and codes for each method (object).<ul>
<li>Keys: Error codes as strings (numeric strings)</li>

View file

@ -0,0 +1 @@
6294c34bced72f17d34007117260a5c77cb8fa8f00ac5612d6d99191f358d80c

View file

@ -1 +0,0 @@
26fec2b88661cce86c58e5b6e8491b071daeef0bfc59da29c5101b204cd9c453

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 F4 86 0E 00 12 12 AC 65
0010 | 14 00 00 00 F1 8E 7E BE 85 11 E6 D3 FF 7B BF B4
0020 | 57 05 3C E2 C4 78 65 2B</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 44 75 02 00 B1 14 AC 65
0010 | 14 00 00 00 F1 8E 7E BE E9 78 DB B0 74 3F E9 90
0020 | 23 90 8D 35 49 A9 D0 3E</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>F4860E001212AC65</code></td>
<td><code>44750200B114AC65</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>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</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 8C 02 CF 12 12 AC 65
0010 | 80 00 00 00 63 24 16 05 85 11 E6 D3 FF 7B BF B4
0020 | 57 05 3C E2 C4 78 65 2B 68 82 A4 88 2C 65 B8 FC
0030 | D0 E4 DC 0C DC 8A DC 85 08 30 54 53 24 C8 A8 C7
0040 | 65 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 A4 5F 52 B1 14 AC 65
0010 | BC 00 00 00 63 24 16 05 E9 78 DB B0 74 3F E9 90
0020 | 23 90 8D 35 49 A9 D0 3E 43 7A 52 81 56 6B 8D D1
0030 | B4 C2 39 1A 28 03 40 0C 08 15 BB 46 F8 61 C2 9A
0040 | E7 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>018C02CF1212AC65</code></td>
<td><code>01A45F52B114AC65</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>80000000</code> (128 in decimal)</td>
<td><code>BC000000</code> (188 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>0830545324C8A8C765000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3482499829314668389</td>
<td><code>0815BB46F861C29AE7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1565923328047356647</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 = 3482499829314668389</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3482499829314668389 = 1829631877 * 1903388257</code></p>
<pre><code>p = 1829631877
q = 1903388257</code></pre>
<pre><code>pq = 1565923328047356647</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1565923328047356647 = 1171349233 * 1336854359</code></p>
<pre><code>p = 1171349233
q = 1336854359</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 30 54 53 24 C8 A8 C7 65 00 00 00
0010 | 04 6D 0D F7 85 00 00 00 04 71 73 66 61 00 00 00
0020 | 85 11 E6 D3 FF 7B BF B4 57 05 3C E2 C4 78 65 2B
0030 | 68 82 A4 88 2C 65 B8 FC D0 E4 DC 0C DC 8A DC 85
0040 | B7 8C 89 6B 15 CC B4 D6 30 63 CA AD 7E 59 96 04
0050 | FF 4C 71 9D 6E 71 A3 39 EF 22 B6 2B 75 B8 00 F5
<pre><code>0000 | 95 5F F5 A9 08 15 BB 46 F8 61 C2 9A E7 00 00 00
0010 | 04 45 D1 5E F1 00 00 00 04 4F AE C7 57 00 00 00
0020 | E9 78 DB B0 74 3F E9 90 23 90 8D 35 49 A9 D0 3E
0030 | 43 7A 52 81 56 6B 8D D1 B4 C2 39 1A 28 03 40 0C
0040 | 73 D7 F0 C7 7D FB 49 EB BC 51 8F 5D 94 9D 71 FC
0050 | 34 A1 32 6A E4 61 F9 6C 05 E8 E4 04 DD B2 F7 4E
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 = 1903388257</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>0830545324C8A8C765000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3482499829314668389</td>
<td><code>0815BB46F861C29AE7000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1565923328047356647</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>046D0DF785000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1829631877</td>
<td><code>0445D15EF1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1171349233</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>0471736661000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1903388257</td>
<td><code>044FAEC757000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1336854359</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>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>B78C896B15CCB4D63063CAAD7E599604</code> <code>FF4C719D6E71A339EF22B62B75B800F5</code></td>
<td><code>73D7F0C77DFB49EBBC518F5D949D71FC</code> <code>34A1326AE461F96C05E8E404DDB2F74E</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1903388257</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 = 955FF5A90830545324C8A8C765000000046D0DF78500000004717366610000008511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC85B78C896B15CCB4D63063CAAD7E599604FF4C719D6E71A339EF22B62B75B800F502000000
random_padding_bytes = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA67B04716079ED1D8C5C6DFFC899D88B4F27FB8DB955C1BF460FCF1C96B8A92B70656319179B2B4DEDF292D9A6C274D037229F2AE7956020D9A0BE4C84327A07</code></pre>
<pre><code>data = 955FF5A90815BB46F861C29AE70000000445D15EF1000000044FAEC757000000E978DBB0743FE99023908D3549A9D03E437A5281566B8DD1B4C2391A2803400C73D7F0C77DFB49EBBC518F5D949D71FC34A1326AE461F96C05E8E404DDB2F74E02000000
random_padding_bytes = 14BF6A70E3F550467FAE1BE28E80F43545AEEFD410661367EF0D1FE2C1DB27F312549AA75E13C15C17417F2535F10CADADE45FB8EC24FFFE33DB2B6BF2980D491991904D1FFBEBF398DDC890E218AACB21C25D1C0C0F7935E596126E</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 = AFE23F2C39D79EB16F4E58719FB4BCE2721313590B8508C09C5BE40074DC124EDA179ED092FA389B1F1FE957D069EEE3C4DC3470E6600FA39F85CE6A73BDF27C6147EB481338D7A52AC7777CD3398C2A0A5E9F9B055B96F6175CD49753D00DFD5506C1FAE534D76FD882EAA5FAFD948D0F9B147DB87EF08AE5B54B808E47701B52963689074515B6889CD7FB3D401ED6CD078EB80373D37C11BAD4B1A227A04224A121669406DEEA919C115392F78C83B1B006D53DFE5308F69BF537BC9AC75C849187E009E5BD80BB5282264D0DFACC223D587BB5F4F2FE4A53C6FC20E1367BCA16ECAAD723F631133E18BDBA05FB52E0CF19C8FE660AEB1F0B9E78BAB0AA70</code></pre>
<pre><code>encrypted_data = ADBAFD9A9BF1E23B77A1C20D6D1A7EFFF9D678D6ABD122378D9ED8E09A4E5A33FD3519B821D339F0CB2CC6E7ADBCAC7C754698508AB7B024C61F48E4084CDA4DDEE413A65D729E5D09ACFAAC5F2FF93141C02126794A2475A6428F4D094EFF3D5DF111BD2AEBB4F38D07728D622C7DC536D284AC71F9F980264B3E5E9A281E849E99B0A9DA817775481BB623F1F2F915FD955427D6D823C03EC30FBA9D810D195177B5EFE322DBCDF60862E5EA44FE0A56B6CF6A9017A25ADB52F7935A31E033763C4DBD47E5F507D8ED216D6CF7029AC7F7B85CF50CBDA91423F545D73A497FC26885A1CDF464728BAF0FBC07523556CE9C3C5AA02F516F26997BF54F8CF4C7</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 6C B6 0E 00 12 12 AC 65
0010 | 40 01 00 00 BE E4 12 D7 85 11 E6 D3 FF 7B BF B4
0020 | 57 05 3C E2 C4 78 65 2B 68 82 A4 88 2C 65 B8 FC
0030 | D0 E4 DC 0C DC 8A DC 85 04 6D 0D F7 85 00 00 00
0040 | 04 71 73 66 61 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 AF E2 3F 2C 39 D7 9E B1 6F 4E 58 71
0060 | 9F B4 BC E2 72 13 13 59 0B 85 08 C0 9C 5B E4 00
0070 | 74 DC 12 4E DA 17 9E D0 92 FA 38 9B 1F 1F E9 57
0080 | D0 69 EE E3 C4 DC 34 70 E6 60 0F A3 9F 85 CE 6A
0090 | 73 BD F2 7C 61 47 EB 48 13 38 D7 A5 2A C7 77 7C
00A0 | D3 39 8C 2A 0A 5E 9F 9B 05 5B 96 F6 17 5C D4 97
00B0 | 53 D0 0D FD 55 06 C1 FA E5 34 D7 6F D8 82 EA A5
00C0 | FA FD 94 8D 0F 9B 14 7D B8 7E F0 8A E5 B5 4B 80
00D0 | 8E 47 70 1B 52 96 36 89 07 45 15 B6 88 9C D7 FB
00E0 | 3D 40 1E D6 CD 07 8E B8 03 73 D3 7C 11 BA D4 B1
00F0 | A2 27 A0 42 24 A1 21 66 94 06 DE EA 91 9C 11 53
0100 | 92 F7 8C 83 B1 B0 06 D5 3D FE 53 08 F6 9B F5 37
0110 | BC 9A C7 5C 84 91 87 E0 09 E5 BD 80 BB 52 82 26
0120 | 4D 0D FA CC 22 3D 58 7B B5 F4 F2 FE 4A 53 C6 FC
0130 | 20 E1 36 7B CA 16 EC AA D7 23 F6 31 13 3E 18 BD
0140 | BA 05 FB 52 E0 CF 19 C8 FE 66 0A EB 1F 0B 9E 78
0150 | BA B0 AA 70</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 80 E8 05 00 B1 14 AC 65
0010 | 40 01 00 00 BE E4 12 D7 E9 78 DB B0 74 3F E9 90
0020 | 23 90 8D 35 49 A9 D0 3E 43 7A 52 81 56 6B 8D D1
0030 | B4 C2 39 1A 28 03 40 0C 04 45 D1 5E F1 00 00 00
0040 | 04 4F AE C7 57 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 AD BA FD 9A 9B F1 E2 3B 77 A1 C2 0D
0060 | 6D 1A 7E FF F9 D6 78 D6 AB D1 22 37 8D 9E D8 E0
0070 | 9A 4E 5A 33 FD 35 19 B8 21 D3 39 F0 CB 2C C6 E7
0080 | AD BC AC 7C 75 46 98 50 8A B7 B0 24 C6 1F 48 E4
0090 | 08 4C DA 4D DE E4 13 A6 5D 72 9E 5D 09 AC FA AC
00A0 | 5F 2F F9 31 41 C0 21 26 79 4A 24 75 A6 42 8F 4D
00B0 | 09 4E FF 3D 5D F1 11 BD 2A EB B4 F3 8D 07 72 8D
00C0 | 62 2C 7D C5 36 D2 84 AC 71 F9 F9 80 26 4B 3E 5E
00D0 | 9A 28 1E 84 9E 99 B0 A9 DA 81 77 75 48 1B B6 23
00E0 | F1 F2 F9 15 FD 95 54 27 D6 D8 23 C0 3E C3 0F BA
00F0 | 9D 81 0D 19 51 77 B5 EF E3 22 DB CD F6 08 62 E5
0100 | EA 44 FE 0A 56 B6 CF 6A 90 17 A2 5A DB 52 F7 93
0110 | 5A 31 E0 33 76 3C 4D BD 47 E5 F5 07 D8 ED 21 6D
0120 | 6C F7 02 9A C7 F7 B8 5C F5 0C BD A9 14 23 F5 45
0130 | D7 3A 49 7F C2 68 85 A1 CD F4 64 72 8B AF 0F BC
0140 | 07 52 35 56 CE 9C 3C 5A A0 2F 51 6F 26 99 7B F5
0150 | 4F 8C F4 C7</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 = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>6CB60E001212AC65</code></td>
<td><code>80E80500B114AC65</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 = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>046D0DF785000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1829631877</td>
<td><code>0445D15EF1000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1171349233</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>0471736661000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1903388257</td>
<td><code>044FAEC757000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1336854359</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 = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100AFE23F2C39D79EB16F4E5871</code> <code>9FB4BCE2721313590B8508C09C5BE400</code> <code>74DC124EDA179ED092FA389B1F1FE957</code> <code>D069EEE3C4DC3470E6600FA39F85CE6A</code> <code>73BDF27C6147EB481338D7A52AC7777C</code> <code>D3398C2A0A5E9F9B055B96F6175CD497</code> <code>53D00DFD5506C1FAE534D76FD882EAA5</code> <code>FAFD948D0F9B147DB87EF08AE5B54B80</code> <code>8E47701B52963689074515B6889CD7FB</code> <code>3D401ED6CD078EB80373D37C11BAD4B1</code> <code>A227A04224A121669406DEEA919C1153</code> <code>92F78C83B1B006D53DFE5308F69BF537</code> <code>BC9AC75C849187E009E5BD80BB528226</code> <code>4D0DFACC223D587BB5F4F2FE4A53C6FC</code> <code>20E1367BCA16ECAAD723F631133E18BD</code> <code>BA05FB52E0CF19C8FE660AEB1F0B9E78</code><br> <code>BAB0AA70</code></td>
<td><code>FE000100ADBAFD9A9BF1E23B77A1C20D</code> <code>6D1A7EFFF9D678D6ABD122378D9ED8E0</code> <code>9A4E5A33FD3519B821D339F0CB2CC6E7</code> <code>ADBCAC7C754698508AB7B024C61F48E4</code> <code>084CDA4DDEE413A65D729E5D09ACFAAC</code> <code>5F2FF93141C02126794A2475A6428F4D</code> <code>094EFF3D5DF111BD2AEBB4F38D07728D</code> <code>622C7DC536D284AC71F9F980264B3E5E</code> <code>9A281E849E99B0A9DA817775481BB623</code> <code>F1F2F915FD955427D6D823C03EC30FBA</code> <code>9D810D195177B5EFE322DBCDF60862E5</code> <code>EA44FE0A56B6CF6A9017A25ADB52F793</code> <code>5A31E033763C4DBD47E5F507D8ED216D</code> <code>6CF7029AC7F7B85CF50CBDA91423F545</code> <code>D73A497FC26885A1CDF464728BAF0FBC</code> <code>07523556CE9C3C5AA02F516F26997BF5</code><br> <code>4F8CF4C7</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA
<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 34 67 89 13 12 AC 65
0010 | A8 02 00 00 5C 07 E8 D0 85 11 E6 D3 FF 7B BF B4
0020 | 57 05 3C E2 C4 78 65 2B 68 82 A4 88 2C 65 B8 FC
0030 | D0 E4 DC 0C DC 8A DC 85 FE 50 02 00 83 08 4B FF
0040 | 48 E9 DB 4F 59 18 FB E4 44 3E C8 E3 5B 7A 8F FB
0050 | 85 60 65 FB 00 41 AE FB 97 CF FE 97 03 80 EB 36
0060 | 96 C0 F9 47 7D C9 7C 64 3E 13 C5 59 59 45 5F 4B
0070 | 6B 1D 4A 5D 72 9A 1A C7 A8 F0 D8 CA F6 C6 15 3A
0080 | 45 FA B5 3A 9F 4F 4C 6B E2 F2 11 B0 53 79 7F 6A
0090 | 6D 1C 34 81 8F 83 98 5B 26 8D 82 F5 4A 51 80 05
00A0 | 45 BC 81 3D AA 31 32 B5 13 82 FB 0A F7 78 E1 63
00B0 | 67 06 06 8A 29 98 EB 8E 4E 42 12 B0 6C 63 09 F1
00C0 | 5E ED 4E AD 8A 18 A1 4F 3B B5 94 CE 16 2D C7 E9
00D0 | 46 36 C0 91 7F ED 6B E8 A2 7F 2B 1E DD 75 2F 21
00E0 | 80 1C 2A 48 D8 03 10 FC A2 94 5C C4 D6 24 92 57
00F0 | F7 5E 0D 85 92 71 A7 C5 CC 46 C5 4C DD CF AD 07
0100 | 6A 29 4A 00 80 85 8B B5 6F 85 5B 99 27 DC 01 46
0110 | 1D 91 2A 0D 6E 78 6A 84 52 F0 63 A3 42 A2 94 36
0120 | 6F 38 A9 97 7D 99 37 7B 48 C8 CF 08 68 BD 10 D5
0130 | CB AB DB CA B4 51 36 C3 6C F8 DE 59 CF 05 F3 D6
0140 | AB 2F 96 09 D6 56 92 CB 19 B6 95 7D C8 C9 CB EF
0150 | 54 9B F7 72 BB 32 42 F9 9C 07 75 72 49 E1 40 0F
0160 | D2 78 70 56 C5 5A 17 C4 2A C6 CD B7 EE 8B 1F AB
0170 | 64 70 8E 53 EC FA 9E BC AD 7F BA 09 81 7A 1E E7
0180 | F9 4C 0F 6A 65 9C DE 70 95 B0 7A 82 BC CF 6E 8E
0190 | 43 D9 76 2D 1F 01 CA 8A 60 CB 10 BC 22 24 F0 A9
01A0 | FF F5 FF E2 F3 52 80 2B 58 AC 5E F8 15 96 03 E8
01B0 | 9A 20 E8 A6 76 AE D4 25 03 35 00 C7 CF 1B AF B1
01C0 | AD 99 A1 FE 0E 2A 9E 54 B1 C3 A9 5A 90 F4 4E 06
01D0 | 20 93 06 36 CC 45 85 D1 A3 37 22 21 06 4D 14 0A
01E0 | F3 C1 A0 28 4E BF 4A CB D9 0B FC 98 AA C2 7F 9F
01F0 | B8 C6 4E FC C2 93 B2 54 D5 18 DE 7E 6B E8 6F 0C
0200 | BB FA 8A A7 A9 92 19 91 7B 6B DC A9 84 E9 CF FF
0210 | BD 16 58 6E 80 B4 EC 55 C0 97 99 EF D4 78 8B D2
0220 | 74 5A 6C C5 93 0F BB 86 61 7A A8 A2 5A E6 F6 DB
0230 | 5E AC 78 73 7A AB 27 B6 1D 4E 6C D4 5F 6B 31 8F
0240 | 52 10 84 84 7F 41 57 DD 68 A8 12 DE 08 B9 48 58
0250 | 3F E7 14 34 E8 C0 6B EC D7 7A 1C 03 31 D9 23 C0
0260 | 44 B0 E8 4C C9 48 58 B4 41 CE DC C6 D3 D1 51 B8
0270 | 8D B0 F0 5D C3 DA E9 56 32 00 7E D9 C2 7A ED 03
0280 | C4 17 7E 89 E3 85 EF 25 B2 73 69 E5</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 7C 64 FF B1 14 AC 65
0010 | 90 02 00 00 5C 07 E8 D0 E9 78 DB B0 74 3F E9 90
0020 | 23 90 8D 35 49 A9 D0 3E 43 7A 52 81 56 6B 8D D1
0030 | B4 C2 39 1A 28 03 40 0C FE 50 02 00 D9 77 C0 F7
0040 | 92 34 D1 4B A4 3A C0 C7 A9 42 95 0F CC 70 66 E8
0050 | A8 4F 8B F4 BF EB 2D 77 A3 1C EE BC B5 6A E0 78
0060 | A8 D9 D4 F0 9D 4C 17 D7 0C 0C 56 9F 08 E4 EC B3
0070 | FD 90 4E 08 42 2D 08 31 DF 12 F1 A7 87 5F 23 3E
0080 | BE 0B DF DD 73 14 8B 9A D1 80 A3 06 2C 6A 8B BF
0090 | 3B 5B 96 6F CF 0C 75 1A A0 57 88 4B 3D D1 75 87
00A0 | E7 69 70 C3 79 F4 8A 0D FD BF 9A 75 A4 46 1F E8
00B0 | C5 EE 3B 00 29 60 19 E9 B3 9F 24 A1 3F 10 42 E0
00C0 | 6F 35 69 5F FE 17 87 8D BE 96 73 E2 31 E3 68 D9
00D0 | CF 87 73 32 4D DE 2F 62 C6 77 DA C2 CF EC F4 0E
00E0 | 40 BD 41 4B BB BF 77 79 A8 63 0A C9 B4 05 88 28
00F0 | AF 60 8D A6 3E 91 E5 9E CA C6 AE 23 4C 69 B0 EE
0100 | 8B 57 F0 C9 D6 9A DA 34 10 08 86 85 07 9A 7F A6
0110 | F7 09 EB 8E 9F 82 1D 24 1F EA 13 C5 DA 6D 0F F5
0120 | 6D 6F 90 0A 40 AA 84 8B F5 CC 44 CB 09 8A 85 7B
0130 | 6B 59 7D C5 23 CA 54 4D 74 DE 63 2D C2 C9 87 A6
0140 | 59 01 24 73 F3 3D 59 47 83 54 47 BE B2 BB D7 4C
0150 | F1 9C 15 9F 34 B6 84 20 81 78 A6 C9 FD 6F 9A 54
0160 | CF F2 8E C7 24 A9 FF 2E 19 C3 79 09 CE E7 4C 3F
0170 | F3 54 04 4A 30 3B 70 EC 69 1F A0 A3 BD F5 A3 FA
0180 | A2 26 D9 00 98 75 7B 3D E0 AF 9A 4C 27 47 97 85
0190 | 4A 5B 35 C9 F5 8E 68 37 A0 E9 A1 5E B3 78 6B AC
01A0 | E8 71 B8 C6 AB C0 69 3B 41 40 5D 9B C2 07 D8 DE
01B0 | 04 D3 F4 2C E5 68 48 19 CD 0C 48 C9 9F C5 77 76
01C0 | 25 86 F7 25 16 2A 21 A0 95 7E A4 FD 15 C5 5E A6
01D0 | 4D CE 91 15 33 7A 9C 5B 18 D8 16 CC 3A 99 33 A4
01E0 | 83 61 D0 5A F1 4F 99 8E 28 18 9D 14 BA 60 75 55
01F0 | 96 26 95 D5 0A 24 D7 A7 D2 FE D4 7E 39 E2 C5 7B
0200 | F1 1A 67 8C E4 F6 95 7F 90 A5 AC C6 5E 12 77 CF
0210 | A2 DE 4E 5F 63 AE 9B 30 9F 04 EC CD 93 E1 AE 07
0220 | 74 BD ED 7B 64 51 45 18 15 03 8C 5A 93 56 32 17
0230 | C7 3D 5F 69 25 93 EB FE 28 FC 3C D7 5A B7 3F 14
0240 | C6 8C 57 F2 41 BA FD B9 B1 48 78 30 47 B3 1C 78
0250 | 23 85 C7 8D 2D D9 6E 45 79 DF 46 E3 D0 49 D5 0F
0260 | 18 C3 D7 1E 92 2D 07 DC E9 BA 40 7B C3 D3 BF 76
0270 | A1 88 E9 41 39 82 CD EA 98 78 AA 52 61 10 16 11
0280 | 7D F9 8B F9 4B 67 85 55 CA 95 CA AD</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 = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>013467891312AC65</code></td>
<td><code>017C64FFB114AC65</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>A8020000</code> (680 in decimal)</td>
<td><code>90020000</code> (656 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE50020083084BFF48E9DB4F5918FBE4</code> <code>443EC8E35B7A8FFB856065FB0041AEFB</code> <code>97CFFE970380EB3696C0F9477DC97C64</code> <code>3E13C55959455F4B6B1D4A5D729A1AC7</code> <code>A8F0D8CAF6C6153A45FAB53A9F4F4C6B</code> <code>E2F211B053797F6A6D1C34818F83985B</code> <code>268D82F54A51800545BC813DAA3132B5</code> <code>1382FB0AF778E1636706068A2998EB8E</code> <code>4E4212B06C6309F15EED4EAD8A18A14F</code> <code>3BB594CE162DC7E94636C0917FED6BE8</code> <code>A27F2B1EDD752F21801C2A48D80310FC</code> <code>A2945CC4D6249257F75E0D859271A7C5</code> <code>CC46C54CDDCFAD076A294A0080858BB5</code> <code>6F855B9927DC01461D912A0D6E786A84</code> <code>52F063A342A294366F38A9977D99377B</code> <code>48C8CF0868BD10D5CBABDBCAB45136C3</code> <code>6CF8DE59CF05F3D6AB2F9609D65692CB</code> <code>19B6957DC8C9CBEF549BF772BB3242F9</code> <code>9C07757249E1400FD2787056C55A17C4</code> <code>2AC6CDB7EE8B1FAB64708E53ECFA9EBC</code> <code>AD7FBA09817A1EE7F94C0F6A659CDE70</code> <code>95B07A82BCCF6E8E43D9762D1F01CA8A</code> <code>60CB10BC2224F0A9FFF5FFE2F352802B</code> <code>58AC5EF8159603E89A20E8A676AED425</code> <code>033500C7CF1BAFB1AD99A1FE0E2A9E54</code> <code>B1C3A95A90F44E0620930636CC4585D1</code> <code>A3372221064D140AF3C1A0284EBF4ACB</code> <code>D90BFC98AAC27F9FB8C64EFCC293B254</code> <code>D518DE7E6BE86F0CBBFA8AA7A9921991</code> <code>7B6BDCA984E9CFFFBD16586E80B4EC55</code> <code>C09799EFD4788BD2745A6CC5930FBB86</code> <code>617AA8A25AE6F6DB5EAC78737AAB27B6</code> <code>1D4E6CD45F6B318F521084847F4157DD</code> <code>68A812DE08B948583FE71434E8C06BEC</code> <code>D77A1C0331D923C044B0E84CC94858B4</code> <code>41CEDCC6D3D151B88DB0F05DC3DAE956</code> <code>32007ED9C27AED03C4177E89E385EF25</code><br> <code>B27369E5</code></td>
<td><code>FE500200D977C0F79234D14BA43AC0C7</code> <code>A942950FCC7066E8A84F8BF4BFEB2D77</code> <code>A31CEEBCB56AE078A8D9D4F09D4C17D7</code> <code>0C0C569F08E4ECB3FD904E08422D0831</code> <code>DF12F1A7875F233EBE0BDFDD73148B9A</code> <code>D180A3062C6A8BBF3B5B966FCF0C751A</code> <code>A057884B3DD17587E76970C379F48A0D</code> <code>FDBF9A75A4461FE8C5EE3B00296019E9</code> <code>B39F24A13F1042E06F35695FFE17878D</code> <code>BE9673E231E368D9CF8773324DDE2F62</code> <code>C677DAC2CFECF40E40BD414BBBBF7779</code> <code>A8630AC9B4058828AF608DA63E91E59E</code> <code>CAC6AE234C69B0EE8B57F0C9D69ADA34</code> <code>10088685079A7FA6F709EB8E9F821D24</code> <code>1FEA13C5DA6D0FF56D6F900A40AA848B</code> <code>F5CC44CB098A857B6B597DC523CA544D</code> <code>74DE632DC2C987A659012473F33D5947</code> <code>835447BEB2BBD74CF19C159F34B68420</code> <code>8178A6C9FD6F9A54CFF28EC724A9FF2E</code> <code>19C37909CEE74C3FF354044A303B70EC</code> <code>691FA0A3BDF5A3FAA226D90098757B3D</code> <code>E0AF9A4C274797854A5B35C9F58E6837</code> <code>A0E9A15EB3786BACE871B8C6ABC0693B</code> <code>41405D9BC207D8DE04D3F42CE5684819</code> <code>CD0C48C99FC577762586F725162A21A0</code> <code>957EA4FD15C55EA64DCE9115337A9C5B</code> <code>18D816CC3A9933A48361D05AF14F998E</code> <code>28189D14BA607555962695D50A24D7A7</code> <code>D2FED47E39E2C57BF11A678CE4F6957F</code> <code>90A5ACC65E1277CFA2DE4E5F63AE9B30</code> <code>9F04ECCD93E1AE0774BDED7B64514518</code> <code>15038C5A93563217C73D5F692593EBFE</code> <code>28FC3CD75AB73F14C68C57F241BAFDB9</code> <code>B148783047B31C782385C78D2DD96E45</code> <code>79DF46E3D049D50F18C3D71E922D07DC</code> <code>E9BA407BC3D3BF76A188E9413982CDEA</code> <code>9878AA52611016117DF98BF94B678555</code><br> <code>CA95CAAD</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 85B452C8A8E2231841E09BA5B04CCB1BD08B7A8135E12693EDF57D4EA
<!-- 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 = 83084BFF48E9DB4F5918FBE4443EC8E35B7A8FFB856065FB0041AEFB97CFFE970380EB3696C0F9477DC97C643E13C55959455F4B6B1D4A5D729A1AC7A8F0D8CAF6C6153A45FAB53A9F4F4C6BE2F211B053797F6A6D1C34818F83985B268D82F54A51800545BC813DAA3132B51382FB0AF778E1636706068A2998EB8E4E4212B06C6309F15EED4EAD8A18A14F3BB594CE162DC7E94636C0917FED6BE8A27F2B1EDD752F21801C2A48D80310FCA2945CC4D6249257F75E0D859271A7C5CC46C54CDDCFAD076A294A0080858BB56F855B9927DC01461D912A0D6E786A8452F063A342A294366F38A9977D99377B48C8CF0868BD10D5CBABDBCAB45136C36CF8DE59CF05F3D6AB2F9609D65692CB19B6957DC8C9CBEF549BF772BB3242F99C07757249E1400FD2787056C55A17C42AC6CDB7EE8B1FAB64708E53ECFA9EBCAD7FBA09817A1EE7F94C0F6A659CDE7095B07A82BCCF6E8E43D9762D1F01CA8A60CB10BC2224F0A9FFF5FFE2F352802B58AC5EF8159603E89A20E8A676AED425033500C7CF1BAFB1AD99A1FE0E2A9E54B1C3A95A90F44E0620930636CC4585D1A3372221064D140AF3C1A0284EBF4ACBD90BFC98AAC27F9FB8C64EFCC293B254D518DE7E6BE86F0CBBFA8AA7A99219917B6BDCA984E9CFFFBD16586E80B4EC55C09799EFD4788BD2745A6CC5930FBB86617AA8A25AE6F6DB5EAC78737AAB27B61D4E6CD45F6B318F521084847F4157DD68A812DE08B948583FE71434E8C06BECD77A1C0331D923C044B0E84CC94858B441CEDCC6D3D151B88DB0F05DC3DAE95632007ED9C27AED03C4177E89E385EF25B27369E5
tmp_aes_key = 81DA5DD974446677CB4862CD420017D29094F1ACAF3313E41573AC6E882A1307
tmp_aes_iv = 62D8149AA82CF10237A48FA917744B3D7BB50E18B131BB77C4792581B78C896B</code></pre>
<pre><code>encrypted_answer = D977C0F79234D14BA43AC0C7A942950FCC7066E8A84F8BF4BFEB2D77A31CEEBCB56AE078A8D9D4F09D4C17D70C0C569F08E4ECB3FD904E08422D0831DF12F1A7875F233EBE0BDFDD73148B9AD180A3062C6A8BBF3B5B966FCF0C751AA057884B3DD17587E76970C379F48A0DFDBF9A75A4461FE8C5EE3B00296019E9B39F24A13F1042E06F35695FFE17878DBE9673E231E368D9CF8773324DDE2F62C677DAC2CFECF40E40BD414BBBBF7779A8630AC9B4058828AF608DA63E91E59ECAC6AE234C69B0EE8B57F0C9D69ADA3410088685079A7FA6F709EB8E9F821D241FEA13C5DA6D0FF56D6F900A40AA848BF5CC44CB098A857B6B597DC523CA544D74DE632DC2C987A659012473F33D5947835447BEB2BBD74CF19C159F34B684208178A6C9FD6F9A54CFF28EC724A9FF2E19C37909CEE74C3FF354044A303B70EC691FA0A3BDF5A3FAA226D90098757B3DE0AF9A4C274797854A5B35C9F58E6837A0E9A15EB3786BACE871B8C6ABC0693B41405D9BC207D8DE04D3F42CE5684819CD0C48C99FC577762586F725162A21A0957EA4FD15C55EA64DCE9115337A9C5B18D816CC3A9933A48361D05AF14F998E28189D14BA607555962695D50A24D7A7D2FED47E39E2C57BF11A678CE4F6957F90A5ACC65E1277CFA2DE4E5F63AE9B309F04ECCD93E1AE0774BDED7B6451451815038C5A93563217C73D5F692593EBFE28FC3CD75AB73F14C68C57F241BAFDB9B148783047B31C782385C78D2DD96E4579DF46E3D049D50F18C3D71E922D07DCE9BA407BC3D3BF76A188E9413982CDEA9878AA52611016117DF98BF94B678555CA95CAAD
tmp_aes_key = 9D464C45BFDBF0975744920C88FBCD9F83D23DF794CB0C0CCCEF73FA533221EC
tmp_aes_iv = 003930D9E4EE401EA2A0EDC81E549AA70E9379EE97C2AEE9B901A95C73D7F0C7</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 815D069AF1EA8A9D6F77D128869282DE4C0ED94EBA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100ADBD5AA15A02DD1BABC572752AEB577ED92036FFC5249D2B510042B9D4AC1FFBD73C1B0E52A6242F4D5863A4397BDAEB9223FDBBB9057F3D656D419E3EC704117E49D486AED9DC0FF27CF2668204324809B1034FF4087C19E7CC429491887B9D802F3B69410ACB13B193BD510AF253ACC61E5C3985D781D654EAB39AE12552D2C025988610AB42251977CF0DAFE62778CCBC29D480E2A13F27E8ACDDAAB6407ADCF2C2997B6C15DE77DB85BDC8FCE81EF67213717F70E64A407CB661E4068501EEBE46CB24FF1C3F9C03EE7E5CDB6F84F1A6E396FB3ABD12A08BD74B9E85A8D16390BD9E68B6458B9589B07CB3646157D51C5659D999F48A8672A2B554834BC61312AC657C987C2F1D39C613
answer = BA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100ADBD5AA15A02DD1BABC572752AEB577ED92036FFC5249D2B510042B9D4AC1FFBD73C1B0E52A6242F4D5863A4397BDAEB9223FDBBB9057F3D656D419E3EC704117E49D486AED9DC0FF27CF2668204324809B1034FF4087C19E7CC429491887B9D802F3B69410ACB13B193BD510AF253ACC61E5C3985D781D654EAB39AE12552D2C025988610AB42251977CF0DAFE62778CCBC29D480E2A13F27E8ACDDAAB6407ADCF2C2997B6C15DE77DB85BDC8FCE81EF67213717F70E64A407CB661E4068501EEBE46CB24FF1C3F9C03EE7E5CDB6F84F1A6E396FB3ABD12A08BD74B9E85A8D16390BD9E68B6458B9589B07CB3646157D51C5659D999F48A8672A2B554834BC61312AC657C987C2F1D39C613</code></pre>
<pre><code>answer_with_hash = 9FE17F63CD99657B72F874E8B9D51DB3CB70E5CFBA0D89B5E978DBB0743FE99023908D3549A9D03E437A5281566B8DD1B4C2391A2803400C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010052A783B9A22EC1DC4969B37491A7A52FAD830D2F81686502E224E589F92EFFCA4C03D9F0C542D30E89DC227B512637FEDA0035E8C68FC044835F3BB0A3E48DF78A640615158528537E190482C475319332C43AC35368AE9857CC80C04B795536BDA9CF3C506391265DF2094CCAD5E2EB5F0BAAC34E3FBB70F181A9203ADC595BE225CF32999F67E3C190B684B72387972337DA5517A4E7746AE569F7995B5DA276AD97284BE85C15157CDAD9BE287167812ECDEF9903C2A3D2C2693ED2BBF9190F4E65D56BC8F1AE75F6A7986AC9A214CBF9E7599D099C8B60DAA9DC4425A9CA016BDF8B7A9582540F5F66BBDC5FFF9F878982976290BE974DA5A7397E454C35B114AC651D04E47BD0474E2C
answer = BA0D89B5E978DBB0743FE99023908D3549A9D03E437A5281566B8DD1B4C2391A2803400C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010052A783B9A22EC1DC4969B37491A7A52FAD830D2F81686502E224E589F92EFFCA4C03D9F0C542D30E89DC227B512637FEDA0035E8C68FC044835F3BB0A3E48DF78A640615158528537E190482C475319332C43AC35368AE9857CC80C04B795536BDA9CF3C506391265DF2094CCAD5E2EB5F0BAAC34E3FBB70F181A9203ADC595BE225CF32999F67E3C190B684B72387972337DA5517A4E7746AE569F7995B5DA276AD97284BE85C15157CDAD9BE287167812ECDEF9903C2A3D2C2693ED2BBF9190F4E65D56BC8F1AE75F6A7986AC9A214CBF9E7599D099C8B60DAA9DC4425A9CA016BDF8B7A9582540F5F66BBDC5FFF9F878982976290BE974DA5A7397E454C35B114AC651D04E47BD0474E2C</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 85 11 E6 D3 FF 7B BF B4 57 05 3C E2
0010 | C4 78 65 2B 68 82 A4 88 2C 65 B8 FC D0 E4 DC 0C
0020 | DC 8A DC 85 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 E9 78 DB B0 74 3F E9 90 23 90 8D 35
0010 | 49 A9 D0 3E 43 7A 52 81 56 6B 8D D1 B4 C2 39 1A
0020 | 28 03 40 0C 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 = BA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8
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 | AD BD 5A A1 5A 02 DD 1B AB C5 72 75 2A EB 57 7E
0140 | D9 20 36 FF C5 24 9D 2B 51 00 42 B9 D4 AC 1F FB
0150 | D7 3C 1B 0E 52 A6 24 2F 4D 58 63 A4 39 7B DA EB
0160 | 92 23 FD BB B9 05 7F 3D 65 6D 41 9E 3E C7 04 11
0170 | 7E 49 D4 86 AE D9 DC 0F F2 7C F2 66 82 04 32 48
0180 | 09 B1 03 4F F4 08 7C 19 E7 CC 42 94 91 88 7B 9D
0190 | 80 2F 3B 69 41 0A CB 13 B1 93 BD 51 0A F2 53 AC
01A0 | C6 1E 5C 39 85 D7 81 D6 54 EA B3 9A E1 25 52 D2
01B0 | C0 25 98 86 10 AB 42 25 19 77 CF 0D AF E6 27 78
01C0 | CC BC 29 D4 80 E2 A1 3F 27 E8 AC DD AA B6 40 7A
01D0 | DC F2 C2 99 7B 6C 15 DE 77 DB 85 BD C8 FC E8 1E
01E0 | F6 72 13 71 7F 70 E6 4A 40 7C B6 61 E4 06 85 01
01F0 | EE BE 46 CB 24 FF 1C 3F 9C 03 EE 7E 5C DB 6F 84
0200 | F1 A6 E3 96 FB 3A BD 12 A0 8B D7 4B 9E 85 A8 D1
0210 | 63 90 BD 9E 68 B6 45 8B 95 89 B0 7C B3 64 61 57
0220 | D5 1C 56 59 D9 99 F4 8A 86 72 A2 B5 54 83 4B C6
0230 | 13 12 AC 65</code></pre>
0130 | 52 A7 83 B9 A2 2E C1 DC 49 69 B3 74 91 A7 A5 2F
0140 | AD 83 0D 2F 81 68 65 02 E2 24 E5 89 F9 2E FF CA
0150 | 4C 03 D9 F0 C5 42 D3 0E 89 DC 22 7B 51 26 37 FE
0160 | DA 00 35 E8 C6 8F C0 44 83 5F 3B B0 A3 E4 8D F7
0170 | 8A 64 06 15 15 85 28 53 7E 19 04 82 C4 75 31 93
0180 | 32 C4 3A C3 53 68 AE 98 57 CC 80 C0 4B 79 55 36
0190 | BD A9 CF 3C 50 63 91 26 5D F2 09 4C CA D5 E2 EB
01A0 | 5F 0B AA C3 4E 3F BB 70 F1 81 A9 20 3A DC 59 5B
01B0 | E2 25 CF 32 99 9F 67 E3 C1 90 B6 84 B7 23 87 97
01C0 | 23 37 DA 55 17 A4 E7 74 6A E5 69 F7 99 5B 5D A2
01D0 | 76 AD 97 28 4B E8 5C 15 15 7C DA D9 BE 28 71 67
01E0 | 81 2E CD EF 99 03 C2 A3 D2 C2 69 3E D2 BB F9 19
01F0 | 0F 4E 65 D5 6B C8 F1 AE 75 F6 A7 98 6A C9 A2 14
0200 | CB F9 E7 59 9D 09 9C 8B 60 DA A9 DC 44 25 A9 CA
0210 | 01 6B DF 8B 7A 95 82 54 0F 5F 66 BB DC 5F FF 9F
0220 | 87 89 82 97 62 90 BE 97 4D A5 A7 39 7E 45 4C 35
0230 | B1 14 AC 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 = BA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100ADBD5AA15A02DD1BABC57275</code> <code>2AEB577ED92036FFC5249D2B510042B9</code> <code>D4AC1FFBD73C1B0E52A6242F4D5863A4</code> <code>397BDAEB9223FDBBB9057F3D656D419E</code> <code>3EC704117E49D486AED9DC0FF27CF266</code> <code>8204324809B1034FF4087C19E7CC4294</code> <code>91887B9D802F3B69410ACB13B193BD51</code> <code>0AF253ACC61E5C3985D781D654EAB39A</code> <code>E12552D2C025988610AB42251977CF0D</code> <code>AFE62778CCBC29D480E2A13F27E8ACDD</code> <code>AAB6407ADCF2C2997B6C15DE77DB85BD</code> <code>C8FCE81EF67213717F70E64A407CB661</code> <code>E4068501EEBE46CB24FF1C3F9C03EE7E</code> <code>5CDB6F84F1A6E396FB3ABD12A08BD74B</code> <code>9E85A8D16390BD9E68B6458B9589B07C</code> <code>B3646157D51C5659D999F48A8672A2B5</code><br> <code>54834BC6</code></td>
<td><code>FE00010052A783B9A22EC1DC4969B374</code> <code>91A7A52FAD830D2F81686502E224E589</code> <code>F92EFFCA4C03D9F0C542D30E89DC227B</code> <code>512637FEDA0035E8C68FC044835F3BB0</code> <code>A3E48DF78A640615158528537E190482</code> <code>C475319332C43AC35368AE9857CC80C0</code> <code>4B795536BDA9CF3C506391265DF2094C</code> <code>CAD5E2EB5F0BAAC34E3FBB70F181A920</code> <code>3ADC595BE225CF32999F67E3C190B684</code> <code>B72387972337DA5517A4E7746AE569F7</code> <code>995B5DA276AD97284BE85C15157CDAD9</code> <code>BE287167812ECDEF9903C2A3D2C2693E</code> <code>D2BBF9190F4E65D56BC8F1AE75F6A798</code> <code>6AC9A214CBF9E7599D099C8B60DAA9DC</code> <code>4425A9CA016BDF8B7A9582540F5F66BB</code> <code>DC5FFF9F878982976290BE974DA5A739</code><br> <code>7E454C35</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>1312AC65</code> (1705775635 in decimal)</td>
<td><code>B114AC65</code> (1705776305 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8
<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 = 34E2A93BE4CFE13511D35E3E465CD0B9ACBBEEBF624FC2C3C8464428B3DEA2A1EB4EF072AF066C0407E1968F05653EAFF329E9C94C50607158FB99D78B26620977AA3FEE2CAC16BF7AAEBD94F3DB29DA95CB12213DC1849AF245C78664F822F41EE54B032973AFA9E713CB1EDE1395E45249B118F0935C3C29DFFF99BB0E8994EEE9B68BDCB5009740F1BCBCEA0CF97CA6537F8A89A51615B341D50C60DB54576EBAAE3E31944619F162E1424B1F9A6C096F56D102071F9A74489B0201F61E363F9920FA7A0BF3663A93C07EFB63B2BB84EB1C651685EE061818A9E805BF47A5A3205CF6B64A3AE81A8B199DFF9198771B527DC2C2A862067EC20E03C76879C3</code></pre>
<pre><code>b = F5167391C60A0EBDA2071C37A5E084D06D9C9228E862ECF0013E0BE74D9D1B2358415A696DA68FAAD9A7CDFDE5898343729BEFDBF4B15A62B477EBEED313012BD021F140032F30EC34AEDDB670464597EACFB25E0FB2D3E7ABFF2EE60264DA115731A81549E90DDB3D3BD6DF365F9D026FF5DE53075047CD3B0AF9B8B97ADB1E9608C5DB1EBD9BC4BEB54A9B5F263F9604A6B445BD611E0E3A02B0161C7345489DE26658E51D2B38B726AAC82084782CCC2E81CD1333720201048B483D7F2763CA43EA25BBFA3FCFB32DCE197F3F89585B4D2E3FBBC130E22D8A76B5F06C7DABA35BD8D511A7078D41E64356CA0C9353A9397E1FD2BBF784C7BAB9E492096012</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 = 22752B60FA46F5CBA1A270DE3E0F69F09A4443816DD795B8B12115A955729E25275A241C1F375DC5773FAF48F538B0E1ED24C7C8B2696BBEF2F86E025574967E4E7CA2A43C694B9FBA4D1920DFE3ABB6F6362D44B311415082D5BD801A7829EBA67DFFA0BBA474476512729ACBC34D0AEC3A320048D2A04882BE5CADD60A885650C2C810D543D100C8A9650BF18D6E3CDEB17E5E921E0B7D3A56EA3441BFD66601BBA52AC6FFB2272A9C2093AE95015DC24D58F806E04EB6B84C2818CE36551FA38EC3C80CD6A0E295ED7322FFE942B2522E3CD6E33C1E52F7C8E20607CD44C0244631006A63609A1FFCABE4EA0DCF276CEE1F92FB3978B5AD0B9776EC7ED453</code></pre>
<pre><code>g_b = C2246172FFB04B371A24EE430BD735394280ED1B34AB0E59F865498B2C7FC4D795E3E71A0D2B80D8F9FF0FCDA262E52AFE0C5FF3B1B09911091E8A8D885D8C017B622D2560BC4487FAE42E04E1971D16C4BF6B88E2AC632385719A31236B7F2B417022E0865A046003D5B320DEB3B2CA845CEDB0EFB5BDCAF0F5F2F2B17249FD42CEE616EC64EC02C6B10C33BAFEE67FD13D4283EFE2E399B3ED006B4184295EA69B991083F083617D5875AE7BE5027281C1FA33E6D408FE500EE45DFC11913C54E4B5F3E247A998917F4BDE2CDFE952B7D6C820B8682A1EC974B44147E3A2D1CC9938DE9B3F2061C80FF0B67A5446F90F11BFFE48652653E0EE4DE1FEC5268C</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 85 11 E6 D3 FF 7B BF B4 57 05 3C E2
0010 | C4 78 65 2B 68 82 A4 88 2C 65 B8 FC D0 E4 DC 0C
0020 | DC 8A DC 85 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 22 75 2B 60 FA 46 F5 CB A1 A2 70 DE 3E 0F 69 F0
0040 | 9A 44 43 81 6D D7 95 B8 B1 21 15 A9 55 72 9E 25
0050 | 27 5A 24 1C 1F 37 5D C5 77 3F AF 48 F5 38 B0 E1
0060 | ED 24 C7 C8 B2 69 6B BE F2 F8 6E 02 55 74 96 7E
0070 | 4E 7C A2 A4 3C 69 4B 9F BA 4D 19 20 DF E3 AB B6
0080 | F6 36 2D 44 B3 11 41 50 82 D5 BD 80 1A 78 29 EB
0090 | A6 7D FF A0 BB A4 74 47 65 12 72 9A CB C3 4D 0A
00A0 | EC 3A 32 00 48 D2 A0 48 82 BE 5C AD D6 0A 88 56
00B0 | 50 C2 C8 10 D5 43 D1 00 C8 A9 65 0B F1 8D 6E 3C
00C0 | DE B1 7E 5E 92 1E 0B 7D 3A 56 EA 34 41 BF D6 66
00D0 | 01 BB A5 2A C6 FF B2 27 2A 9C 20 93 AE 95 01 5D
00E0 | C2 4D 58 F8 06 E0 4E B6 B8 4C 28 18 CE 36 55 1F
00F0 | A3 8E C3 C8 0C D6 A0 E2 95 ED 73 22 FF E9 42 B2
0100 | 52 2E 3C D6 E3 3C 1E 52 F7 C8 E2 06 07 CD 44 C0
0110 | 24 46 31 00 6A 63 60 9A 1F FC AB E4 EA 0D CF 27
0120 | 6C EE 1F 92 FB 39 78 B5 AD 0B 97 76 EC 7E D4 53</code></pre>
<pre><code>0000 | 54 B6 43 66 E9 78 DB B0 74 3F E9 90 23 90 8D 35
0010 | 49 A9 D0 3E 43 7A 52 81 56 6B 8D D1 B4 C2 39 1A
0020 | 28 03 40 0C 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | C2 24 61 72 FF B0 4B 37 1A 24 EE 43 0B D7 35 39
0040 | 42 80 ED 1B 34 AB 0E 59 F8 65 49 8B 2C 7F C4 D7
0050 | 95 E3 E7 1A 0D 2B 80 D8 F9 FF 0F CD A2 62 E5 2A
0060 | FE 0C 5F F3 B1 B0 99 11 09 1E 8A 8D 88 5D 8C 01
0070 | 7B 62 2D 25 60 BC 44 87 FA E4 2E 04 E1 97 1D 16
0080 | C4 BF 6B 88 E2 AC 63 23 85 71 9A 31 23 6B 7F 2B
0090 | 41 70 22 E0 86 5A 04 60 03 D5 B3 20 DE B3 B2 CA
00A0 | 84 5C ED B0 EF B5 BD CA F0 F5 F2 F2 B1 72 49 FD
00B0 | 42 CE E6 16 EC 64 EC 02 C6 B1 0C 33 BA FE E6 7F
00C0 | D1 3D 42 83 EF E2 E3 99 B3 ED 00 6B 41 84 29 5E
00D0 | A6 9B 99 10 83 F0 83 61 7D 58 75 AE 7B E5 02 72
00E0 | 81 C1 FA 33 E6 D4 08 FE 50 0E E4 5D FC 11 91 3C
00F0 | 54 E4 B5 F3 E2 47 A9 98 91 7F 4B DE 2C DF E9 52
0100 | B7 D6 C8 20 B8 68 2A 1E C9 74 B4 41 47 E3 A2 D1
0110 | CC 99 38 DE 9B 3F 20 61 C8 0F F0 B6 7A 54 46 F9
0120 | 0F 11 BF FE 48 65 26 53 E0 EE 4D E1 FE C5 26 8C</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 = BA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE00010022752B60FA46F5CBA1A270DE</code> <code>3E0F69F09A4443816DD795B8B12115A9</code> <code>55729E25275A241C1F375DC5773FAF48</code> <code>F538B0E1ED24C7C8B2696BBEF2F86E02</code> <code>5574967E4E7CA2A43C694B9FBA4D1920</code> <code>DFE3ABB6F6362D44B311415082D5BD80</code> <code>1A7829EBA67DFFA0BBA474476512729A</code> <code>CBC34D0AEC3A320048D2A04882BE5CAD</code> <code>D60A885650C2C810D543D100C8A9650B</code> <code>F18D6E3CDEB17E5E921E0B7D3A56EA34</code> <code>41BFD66601BBA52AC6FFB2272A9C2093</code> <code>AE95015DC24D58F806E04EB6B84C2818</code> <code>CE36551FA38EC3C80CD6A0E295ED7322</code> <code>FFE942B2522E3CD6E33C1E52F7C8E206</code> <code>07CD44C0244631006A63609A1FFCABE4</code> <code>EA0DCF276CEE1F92FB3978B5AD0B9776</code><br> <code>EC7ED453</code></td>
<td><code>FE000100C2246172FFB04B371A24EE43</code> <code>0BD735394280ED1B34AB0E59F865498B</code> <code>2C7FC4D795E3E71A0D2B80D8F9FF0FCD</code> <code>A262E52AFE0C5FF3B1B09911091E8A8D</code> <code>885D8C017B622D2560BC4487FAE42E04</code> <code>E1971D16C4BF6B88E2AC632385719A31</code> <code>236B7F2B417022E0865A046003D5B320</code> <code>DEB3B2CA845CEDB0EFB5BDCAF0F5F2F2</code> <code>B17249FD42CEE616EC64EC02C6B10C33</code> <code>BAFEE67FD13D4283EFE2E399B3ED006B</code> <code>4184295EA69B991083F083617D5875AE</code> <code>7BE5027281C1FA33E6D408FE500EE45D</code> <code>FC11913C54E4B5F3E247A998917F4BDE</code> <code>2CDFE952B7D6C820B8682A1EC974B441</code> <code>47E3A2D1CC9938DE9B3F2061C80FF0B6</code> <code>7A5446F90F11BFFE48652653E0EE4DE1</code><br> <code>FEC5268C</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 = BA0D89B58511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC8
<!-- 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 = 54B643668511E6D3FF7BBFB457053CE2C478652B6882A4882C65B8FCD0E4DC0CDC8ADC850000000000000000FE00010022752B60FA46F5CBA1A270DE3E0F69F09A4443816DD795B8B12115A955729E25275A241C1F375DC5773FAF48F538B0E1ED24C7C8B2696BBEF2F86E025574967E4E7CA2A43C694B9FBA4D1920DFE3ABB6F6362D44B311415082D5BD801A7829EBA67DFFA0BBA474476512729ACBC34D0AEC3A320048D2A04882BE5CADD60A885650C2C810D543D100C8A9650BF18D6E3CDEB17E5E921E0B7D3A56EA3441BFD66601BBA52AC6FFB2272A9C2093AE95015DC24D58F806E04EB6B84C2818CE36551FA38EC3C80CD6A0E295ED7322FFE942B2522E3CD6E33C1E52F7C8E20607CD44C0244631006A63609A1FFCABE4EA0DCF276CEE1F92FB3978B5AD0B9776EC7ED453
padding = 0973B9CD9A3095118E4B9D62
tmp_aes_key = 81DA5DD974446677CB4862CD420017D29094F1ACAF3313E41573AC6E882A1307
tmp_aes_iv = 62D8149AA82CF10237A48FA917744B3D7BB50E18B131BB77C4792581B78C896B</code></pre>
<pre><code>data = 54B64366E978DBB0743FE99023908D3549A9D03E437A5281566B8DD1B4C2391A2803400C0000000000000000FE000100C2246172FFB04B371A24EE430BD735394280ED1B34AB0E59F865498B2C7FC4D795E3E71A0D2B80D8F9FF0FCDA262E52AFE0C5FF3B1B09911091E8A8D885D8C017B622D2560BC4487FAE42E04E1971D16C4BF6B88E2AC632385719A31236B7F2B417022E0865A046003D5B320DEB3B2CA845CEDB0EFB5BDCAF0F5F2F2B17249FD42CEE616EC64EC02C6B10C33BAFEE67FD13D4283EFE2E399B3ED006B4184295EA69B991083F083617D5875AE7BE5027281C1FA33E6D408FE500EE45DFC11913C54E4B5F3E247A998917F4BDE2CDFE952B7D6C820B8682A1EC974B44147E3A2D1CC9938DE9B3F2061C80FF0B67A5446F90F11BFFE48652653E0EE4DE1FEC5268C
padding = A239ABEDF75DB73AFA1FD7B5
tmp_aes_key = 9D464C45BFDBF0975744920C88FBCD9F83D23DF794CB0C0CCCEF73FA533221EC
tmp_aes_iv = 003930D9E4EE401EA2A0EDC81E549AA70E9379EE97C2AEE9B901A95C73D7F0C7</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 = 3131D119B3A858E77A31F330EE8480414931A55ECC64D4E54B9EAD643AA110111B4B9066F514E12C78F6C3CB3FB68445D8CAEE8CBD366066DDC48E197D11BECE73ED510B54BEA938A5C3717ED8CE019E3073B95FD198175626544B58A15F79B4C9D9028D8DA2B0389661282DFCE55B522AF7A756611AAF00FFEDC421A50AECF530EA806E8B1A150C689F429A82D7701EFF370A3D9EC12051325E95AD0A3A6991287118BE3686F6D8F5FE882B524976C9E1288F0594E33385DA155005EFD757F4F4F669BF0204C09A9B267758DE41ED6CC68E2124598368B30F56C643C7C6BBD180AA82669EC0CC8715581A5A3220FFC76D547E83EBB1C2520874B57726B7E90A518089DE9255FF40D0D9FB06AD8D22DCEEB38BC8E972230800C4A08D959DC768DB09CE13C897E80A675ED30B7D0B3C534BED289F9E58BFD5F4DA692A98B31E72334777FF091B9F095A096E6227F1BA32</code></pre>
<pre><code>encrypted_data = 9508FE98AACA0EA3897250A9C454D0F0AB67F4FCA1CC99EC031F0AF84D974D8A75475F6420E58A86C2162A6BD3B06B6D5D61F2098858E0C3505FCF294C3E4CD9F251BE6533816F7CE7F22341E3D021F4BD4EF4551ABFA446A36D3906BC90F29D74DA0BBDA55C85A6DA2C7C4A75B9A883BD65C28981E496390473D2D33AEAB86E3C593BE41BD8BA311A521876B976F58115B41B27DE29EE80422080F4BC7CD673A965FE9C2BCB29B5F979650387F35550FD7E119FBF585576F15AA5354C0AA69A8D070382A93B0882F979E9265C5E6D63159C5578057856D5D71804E361A35DA8B3DD2A8E2E8692E7F8414D218DCD805D9A0C20B7BD77CF2052E0DF16C1BA9932B43B27A08D1FD1ECDD43A6B08297BA7CBD74E43434B85E67845246EF52AC0874612156FA30DF5EE6EA9F4AD3726E044B9E477FFE89D4682B6DCE3A63381FDB05B53C28EDD64EA8D376D3A458A02204FE</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 24 FA 09 00 13 12 AC 65
0010 | 78 01 00 00 1F 5F 04 F5 85 11 E6 D3 FF 7B BF B4
0020 | 57 05 3C E2 C4 78 65 2B 68 82 A4 88 2C 65 B8 FC
0030 | D0 E4 DC 0C DC 8A DC 85 FE 50 01 00 31 31 D1 19
0040 | B3 A8 58 E7 7A 31 F3 30 EE 84 80 41 49 31 A5 5E
0050 | CC 64 D4 E5 4B 9E AD 64 3A A1 10 11 1B 4B 90 66
0060 | F5 14 E1 2C 78 F6 C3 CB 3F B6 84 45 D8 CA EE 8C
0070 | BD 36 60 66 DD C4 8E 19 7D 11 BE CE 73 ED 51 0B
0080 | 54 BE A9 38 A5 C3 71 7E D8 CE 01 9E 30 73 B9 5F
0090 | D1 98 17 56 26 54 4B 58 A1 5F 79 B4 C9 D9 02 8D
00A0 | 8D A2 B0 38 96 61 28 2D FC E5 5B 52 2A F7 A7 56
00B0 | 61 1A AF 00 FF ED C4 21 A5 0A EC F5 30 EA 80 6E
00C0 | 8B 1A 15 0C 68 9F 42 9A 82 D7 70 1E FF 37 0A 3D
00D0 | 9E C1 20 51 32 5E 95 AD 0A 3A 69 91 28 71 18 BE
00E0 | 36 86 F6 D8 F5 FE 88 2B 52 49 76 C9 E1 28 8F 05
00F0 | 94 E3 33 85 DA 15 50 05 EF D7 57 F4 F4 F6 69 BF
0100 | 02 04 C0 9A 9B 26 77 58 DE 41 ED 6C C6 8E 21 24
0110 | 59 83 68 B3 0F 56 C6 43 C7 C6 BB D1 80 AA 82 66
0120 | 9E C0 CC 87 15 58 1A 5A 32 20 FF C7 6D 54 7E 83
0130 | EB B1 C2 52 08 74 B5 77 26 B7 E9 0A 51 80 89 DE
0140 | 92 55 FF 40 D0 D9 FB 06 AD 8D 22 DC EE B3 8B C8
0150 | E9 72 23 08 00 C4 A0 8D 95 9D C7 68 DB 09 CE 13
0160 | C8 97 E8 0A 67 5E D3 0B 7D 0B 3C 53 4B ED 28 9F
0170 | 9E 58 BF D5 F4 DA 69 2A 98 B3 1E 72 33 47 77 FF
0180 | 09 1B 9F 09 5A 09 6E 62 27 F1 BA 32</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 C8 A0 09 00 B1 14 AC 65
0010 | 78 01 00 00 1F 5F 04 F5 E9 78 DB B0 74 3F E9 90
0020 | 23 90 8D 35 49 A9 D0 3E 43 7A 52 81 56 6B 8D D1
0030 | B4 C2 39 1A 28 03 40 0C FE 50 01 00 95 08 FE 98
0040 | AA CA 0E A3 89 72 50 A9 C4 54 D0 F0 AB 67 F4 FC
0050 | A1 CC 99 EC 03 1F 0A F8 4D 97 4D 8A 75 47 5F 64
0060 | 20 E5 8A 86 C2 16 2A 6B D3 B0 6B 6D 5D 61 F2 09
0070 | 88 58 E0 C3 50 5F CF 29 4C 3E 4C D9 F2 51 BE 65
0080 | 33 81 6F 7C E7 F2 23 41 E3 D0 21 F4 BD 4E F4 55
0090 | 1A BF A4 46 A3 6D 39 06 BC 90 F2 9D 74 DA 0B BD
00A0 | A5 5C 85 A6 DA 2C 7C 4A 75 B9 A8 83 BD 65 C2 89
00B0 | 81 E4 96 39 04 73 D2 D3 3A EA B8 6E 3C 59 3B E4
00C0 | 1B D8 BA 31 1A 52 18 76 B9 76 F5 81 15 B4 1B 27
00D0 | DE 29 EE 80 42 20 80 F4 BC 7C D6 73 A9 65 FE 9C
00E0 | 2B CB 29 B5 F9 79 65 03 87 F3 55 50 FD 7E 11 9F
00F0 | BF 58 55 76 F1 5A A5 35 4C 0A A6 9A 8D 07 03 82
0100 | A9 3B 08 82 F9 79 E9 26 5C 5E 6D 63 15 9C 55 78
0110 | 05 78 56 D5 D7 18 04 E3 61 A3 5D A8 B3 DD 2A 8E
0120 | 2E 86 92 E7 F8 41 4D 21 8D CD 80 5D 9A 0C 20 B7
0130 | BD 77 CF 20 52 E0 DF 16 C1 BA 99 32 B4 3B 27 A0
0140 | 8D 1F D1 EC DD 43 A6 B0 82 97 BA 7C BD 74 E4 34
0150 | 34 B8 5E 67 84 52 46 EF 52 AC 08 74 61 21 56 FA
0160 | 30 DF 5E E6 EA 9F 4A D3 72 6E 04 4B 9E 47 7F FE
0170 | 89 D4 68 2B 6D CE 3A 63 38 1F DB 05 B5 3C 28 ED
0180 | D6 4E A8 D3 76 D3 A4 58 A0 22 04 FE</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>24FA09001312AC65</code></td>
<td><code>C8A00900B114AC65</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>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001003131D119B3A858E77A31F330</code> <code>EE8480414931A55ECC64D4E54B9EAD64</code> <code>3AA110111B4B9066F514E12C78F6C3CB</code> <code>3FB68445D8CAEE8CBD366066DDC48E19</code> <code>7D11BECE73ED510B54BEA938A5C3717E</code> <code>D8CE019E3073B95FD198175626544B58</code> <code>A15F79B4C9D9028D8DA2B0389661282D</code> <code>FCE55B522AF7A756611AAF00FFEDC421</code> <code>A50AECF530EA806E8B1A150C689F429A</code> <code>82D7701EFF370A3D9EC12051325E95AD</code> <code>0A3A6991287118BE3686F6D8F5FE882B</code> <code>524976C9E1288F0594E33385DA155005</code> <code>EFD757F4F4F669BF0204C09A9B267758</code> <code>DE41ED6CC68E2124598368B30F56C643</code> <code>C7C6BBD180AA82669EC0CC8715581A5A</code> <code>3220FFC76D547E83EBB1C2520874B577</code> <code>26B7E90A518089DE9255FF40D0D9FB06</code> <code>AD8D22DCEEB38BC8E972230800C4A08D</code> <code>959DC768DB09CE13C897E80A675ED30B</code> <code>7D0B3C534BED289F9E58BFD5F4DA692A</code> <code>98B31E72334777FF091B9F095A096E62</code><br> <code>27F1BA32</code></td>
<td><code>FE5001009508FE98AACA0EA3897250A9</code> <code>C454D0F0AB67F4FCA1CC99EC031F0AF8</code> <code>4D974D8A75475F6420E58A86C2162A6B</code> <code>D3B06B6D5D61F2098858E0C3505FCF29</code> <code>4C3E4CD9F251BE6533816F7CE7F22341</code> <code>E3D021F4BD4EF4551ABFA446A36D3906</code> <code>BC90F29D74DA0BBDA55C85A6DA2C7C4A</code> <code>75B9A883BD65C28981E496390473D2D3</code> <code>3AEAB86E3C593BE41BD8BA311A521876</code> <code>B976F58115B41B27DE29EE80422080F4</code> <code>BC7CD673A965FE9C2BCB29B5F9796503</code> <code>87F35550FD7E119FBF585576F15AA535</code> <code>4C0AA69A8D070382A93B0882F979E926</code> <code>5C5E6D63159C5578057856D5D71804E3</code> <code>61A35DA8B3DD2A8E2E8692E7F8414D21</code> <code>8DCD805D9A0C20B7BD77CF2052E0DF16</code> <code>C1BA9932B43B27A08D1FD1ECDD43A6B0</code> <code>8297BA7CBD74E43434B85E67845246EF</code> <code>52AC0874612156FA30DF5EE6EA9F4AD3</code> <code>726E044B9E477FFE89D4682B6DCE3A63</code> <code>381FDB05B53C28EDD64EA8D376D3A458</code><br> <code>A02204FE</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 = 98A0E913A31DF91DF8DBEC98A4E0F87EC11FF954BDEDBC7E3E99C0F10A474A47AFDA64A6303A1B252423BA30179ECA31FC9BCFD07AA01AFCB4437ABDC2E3877D7B9DF83886AF1D5EDDE6F1CEA48420C56624EDCAA7938000EF315434015122A797D4A0DB15D3DDAA75DF4D2E1260487592CBA9E134DB6B4E2EAAD626213C37C68D441C883FD66C0147438DA099BDCB28B97C6B9CA90AF2FFC3B466A286ED79D7B218E956284F73B26A5E0229C52E21AFA9ABC3D4F64FE728D2DD56F83B8C6F63B4E311703A663D9F7023488F11FD42B43ECE7D28B91BF2FC6831A115F930814957C8E5A335C341B1741A4789611AD340078BDE0AD7F2EF68CA3D71E4E85B3EE3</code></pre>
<pre><code>auth_key = 27A95B5899719BB35E4AE0DB6B6BC6947FF46DD631E499BBDA6F961C56554D09EE1B78ED28FDBE916000CCB524074461D141DBACE5B09667FA7C2660C85C3B09798E7DFE33A081124771EE963880033760B4049EF2A49E0685D5A9476F03ED8212D898A8353477FCD8A5A8823850D70D0B114612843CA75DB8CC4686CC34E59D25B484B9C3F1381AACD5B3E26F122B8FF5D5D808AE98049F6D35F8CCEDE7D357F7D1976B25249B2DFF6D16F151A3CC274FFFFD23BA5146A2805CA9B78A731DC49DA1A345ABA1798FEFFB7DC6E5B6334B4E059DB14F2414E159460476B1E78D7C04F1681618B322DB56B7A0D2CDEFDA679B76C27C5AD033119C76BB119293B7B7</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 28 A6 07 14 12 AC 65
0010 | 9C 00 00 00 34 F7 CB 3B 85 11 E6 D3 FF 7B BF B4
0020 | 57 05 3C E2 C4 78 65 2B 68 82 A4 88 2C 65 B8 FC
0030 | D0 E4 DC 0C DC 8A DC 85 C7 2A F9 F9 B7 66 4C 54
0040 | 44 19 C2 1C 7B 0C 98 8E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 70 C6 06 B3 14 AC 65
0010 | 60 00 00 00 34 F7 CB 3B E9 78 DB B0 74 3F E9 90
0020 | 23 90 8D 35 49 A9 D0 3E 43 7A 52 81 56 6B 8D D1
0030 | B4 C2 39 1A 28 03 40 0C BA DF F3 86 0B A8 AF BA
0040 | 2C 98 F3 A9 03 0D D1 6D</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>0128A6071412AC65</code></td>
<td><code>0170C606B314AC65</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>9C000000</code> (156 in decimal)</td>
<td><code>60000000</code> (96 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>8511E6D3FF7BBFB457053CE2C478652B</code></td>
<td><code>E978DBB0743FE99023908D3549A9D03E</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6882A4882C65B8FCD0E4DC0CDC8ADC85</code></td>
<td><code>437A5281566B8DD1B4C2391A2803400C</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>C72AF9F9B7664C544419C21C7B0C988E</code></td>
<td><code>BADFF3860BA8AFBA2C98F3A9030DD16D</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>