Update content of files

This commit is contained in:
GitHub Action 2023-12-06 18:31:10 +00:00
parent 8b55a68c7d
commit 9c4fd2c0aa
3 changed files with 213 additions and 210 deletions

View file

@ -4,10 +4,10 @@
<meta charset="utf-8">
<title>inputTakeoutFileLocation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Empty constructor for takeout">
<meta property="description" content="Used to download a JSON file that will contain all personal data related to features that do not have a specialized takeout method yet, see here » for more info on the takeout API.">
<meta property="og:title" content="inputTakeoutFileLocation">
<meta property="og:image" content="">
<meta property="og:description" content="Empty constructor for takeout">
<meta property="og:description" content="Used to download a JSON file that will contain all personal data related to features that do not have a specialized takeout method yet, see here » for more info on the takeout API.">
<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">
@ -59,7 +59,10 @@
<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3>
<p>This constructor does not require any parameters.</p>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/InputFileLocation">InputFileLocation</a></p></div>
<p><a href="/type/InputFileLocation">InputFileLocation</a></p>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
<h4><a class="anchor" href="#takeout-api" id="takeout-api" name="takeout-api"><i class="anchor-icon"></i></a><a href="/api/takeout">Takeout API</a></h4>
<p>Telegram's API allows users to export all of their information through the takeout API.</p></div>
</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 90 0A 0C 00 61 A8 70 65
0010 | 14 00 00 00 F1 8E 7E BE 71 4B B1 C3 0B B2 D2 9E
0020 | 0D A3 4A 1E D3 72 C3 D6</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 2C 08 0F 00 D9 BA 70 65
0010 | 14 00 00 00 F1 8E 7E BE 8C 08 57 AA 2E 27 2A 56
0020 | 04 13 E8 05 64 5D EF 49</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>900A0C0061A87065</code></td>
<td><code>2C080F00D9BA7065</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>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</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 88 20 C8 61 A8 70 65
0010 | B4 00 00 00 63 24 16 05 71 4B B1 C3 0B B2 D2 9E
0020 | 0D A3 4A 1E D3 72 C3 D6 6D 43 E5 FE 7F 4B 90 E8
0030 | 0C 49 C1 D2 AF FE FB CC 08 16 02 19 B9 66 B6 E4
0040 | CF 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 28 3D 66 D9 BA 70 65
0010 | A8 00 00 00 63 24 16 05 8C 08 57 AA 2E 27 2A 56
0020 | 04 13 E8 05 64 5D EF 49 B5 9D 25 38 AE 48 79 78
0030 | F7 F4 B2 24 D3 82 08 D2 08 10 27 B3 FE 7D 03 77
0040 | DF 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>018820C861A87065</code></td>
<td><code>01283D66D9BA7065</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>B4000000</code> (180 in decimal)</td>
<td><code>A8000000</code> (168 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>08160219B966B6E4CF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1585858302870742223</td>
<td><code>081027B3FE7D0377DF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1164096934299006943</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 = 1585858302870742223</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1585858302870742223 = 1057715569 * 1499323967</code></p>
<pre><code>p = 1057715569
q = 1499323967</code></pre>
<pre><code>pq = 1164096934299006943</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1164096934299006943 = 1033809769 * 1126026247</code></p>
<pre><code>p = 1033809769
q = 1126026247</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 16 02 19 B9 66 B6 E4 CF 00 00 00
0010 | 04 3F 0B 75 71 00 00 00 04 59 5D DE 3F 00 00 00
0020 | 71 4B B1 C3 0B B2 D2 9E 0D A3 4A 1E D3 72 C3 D6
0030 | 6D 43 E5 FE 7F 4B 90 E8 0C 49 C1 D2 AF FE FB CC
0040 | 72 E9 8A BF 26 1B FD 56 13 43 90 79 F4 7A 6B CC
0050 | 42 3C D3 A1 98 79 5E C7 6C 18 7E 50 46 E2 2E 7E
<pre><code>0000 | 95 5F F5 A9 08 10 27 B3 FE 7D 03 77 DF 00 00 00
0010 | 04 3D 9E AF 69 00 00 00 04 43 1D CC 07 00 00 00
0020 | 8C 08 57 AA 2E 27 2A 56 04 13 E8 05 64 5D EF 49
0030 | B5 9D 25 38 AE 48 79 78 F7 F4 B2 24 D3 82 08 D2
0040 | 4A 86 DA 13 B5 C2 A3 1B 4F 72 3B 48 3F CA CE 69
0050 | 1C 88 2A 77 01 72 91 6D AE AD 0C 68 E6 E6 4D B6
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 = 1499323967</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>08160219B966B6E4CF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1585858302870742223</td>
<td><code>081027B3FE7D0377DF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1164096934299006943</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>043F0B7571000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1057715569</td>
<td><code>043D9EAF69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1033809769</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>04595DDE3F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1499323967</td>
<td><code>04431DCC07000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1126026247</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>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>72E98ABF261BFD5613439079F47A6BCC</code> <code>423CD3A198795EC76C187E5046E22E7E</code></td>
<td><code>4A86DA13B5C2A31B4F723B483FCACE69</code> <code>1C882A770172916DAEAD0C68E6E64DB6</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1499323967</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 = 955FF5A908160219B966B6E4CF000000043F0B757100000004595DDE3F000000714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBCC72E98ABF261BFD5613439079F47A6BCC423CD3A198795EC76C187E5046E22E7E02000000
random_padding_bytes = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8151BA9E00C1274726C7A4727CBB5ED09B8B0C83F0E141F475AD8399B41B4470783F727CE364C299F5C9036FD533A2E382567605EB3D7F92907766111C649CC8</code></pre>
<pre><code>data = 955FF5A9081027B3FE7D0377DF000000043D9EAF6900000004431DCC070000008C0857AA2E272A560413E805645DEF49B59D2538AE487978F7F4B224D38208D24A86DA13B5C2A31B4F723B483FCACE691C882A770172916DAEAD0C68E6E64DB602000000
random_padding_bytes = C68C9B857D0A036C3DC519E08DF98D07995A10FCA0663CA30F360CE48478B49CF6DA417C914DE0E6FCD8D4D8A95B0B33E0F9BD31FF38C3156E6DEE36330868ADAE220F86FC6D95170B4DB2BF6967C865EB4870DDBA59E284FF761A11</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 = 4EA2380641698C2596000043E7D90FE474A067D6FA95E763F78A098B4C5B43EA7554676363D4C0AF73359317E20272DD3FBBA6F43F6A79D4E6994E35850896A7AE793D43A21ECABFA4BBFB39537FD30121551BAF514224A89BE8D0BF088203596A17B4490CB4A9810B2DF800A32F33FB4FF8FFEE551478F7848D3861DAA94C0D6C497B7F22E90C7F9678C84C234952A3BA4533EFF7F1A0F6F08BD9EC77DCF2CB50D5C6689DD4C1955BAD8C7E2678482BB3C55F19639A59BBF682B9E0E46BBC27D97EDF3473F6C487312E23A48A9E07504203D5031C39F79053FFE356359ECE4FDEB94805E217DC7FBFDDED9803A4C63AE336441A86F8697512D6B78D62745B61</code></pre>
<pre><code>encrypted_data = 492CE78F83CA6A61FF81F0F010DAC442CD1D47CD7D1BC72127378CE3B8BEFF5EE0CFBDA122C64EA25F7DF09BC71891441412D1A414AAEDB32BE57D34C102A5D6C7780D883E7A1F70344DBB7B309E6940EE857C4370BDE1BD7BF86FE75D479A1694BE236B44E5A5204DCFB1D85FA4384DC6BFA1E1A3D6A580458C9DA238E0660532470B54E8F5627726495698FEBA681B1FAB46AA003F2E01116FE0D666189A3B56DBEBFE3CACA4267F46A0819FE8E6C275DC07EA7562F28F7702563FFD6E1DA6ED17BCBC16005EB76D1A5862DB7B06D761B778BF211BAD88E32A80C4E7573E2FCFCC5A84FA7B8377F3893E2899ABDD473214F7C0249C4CA88BA1F3665C8F9F28</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 94 0A 0C 00 61 A8 70 65
0010 | 40 01 00 00 BE E4 12 D7 71 4B B1 C3 0B B2 D2 9E
0020 | 0D A3 4A 1E D3 72 C3 D6 6D 43 E5 FE 7F 4B 90 E8
0030 | 0C 49 C1 D2 AF FE FB CC 04 3F 0B 75 71 00 00 00
0040 | 04 59 5D DE 3F 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 4E A2 38 06 41 69 8C 25 96 00 00 43
0060 | E7 D9 0F E4 74 A0 67 D6 FA 95 E7 63 F7 8A 09 8B
0070 | 4C 5B 43 EA 75 54 67 63 63 D4 C0 AF 73 35 93 17
0080 | E2 02 72 DD 3F BB A6 F4 3F 6A 79 D4 E6 99 4E 35
0090 | 85 08 96 A7 AE 79 3D 43 A2 1E CA BF A4 BB FB 39
00A0 | 53 7F D3 01 21 55 1B AF 51 42 24 A8 9B E8 D0 BF
00B0 | 08 82 03 59 6A 17 B4 49 0C B4 A9 81 0B 2D F8 00
00C0 | A3 2F 33 FB 4F F8 FF EE 55 14 78 F7 84 8D 38 61
00D0 | DA A9 4C 0D 6C 49 7B 7F 22 E9 0C 7F 96 78 C8 4C
00E0 | 23 49 52 A3 BA 45 33 EF F7 F1 A0 F6 F0 8B D9 EC
00F0 | 77 DC F2 CB 50 D5 C6 68 9D D4 C1 95 5B AD 8C 7E
0100 | 26 78 48 2B B3 C5 5F 19 63 9A 59 BB F6 82 B9 E0
0110 | E4 6B BC 27 D9 7E DF 34 73 F6 C4 87 31 2E 23 A4
0120 | 8A 9E 07 50 42 03 D5 03 1C 39 F7 90 53 FF E3 56
0130 | 35 9E CE 4F DE B9 48 05 E2 17 DC 7F BF DD ED 98
0140 | 03 A4 C6 3A E3 36 44 1A 86 F8 69 75 12 D6 B7 8D
0150 | 62 74 5B 61</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 30 08 0F 00 D9 BA 70 65
0010 | 40 01 00 00 BE E4 12 D7 8C 08 57 AA 2E 27 2A 56
0020 | 04 13 E8 05 64 5D EF 49 B5 9D 25 38 AE 48 79 78
0030 | F7 F4 B2 24 D3 82 08 D2 04 3D 9E AF 69 00 00 00
0040 | 04 43 1D CC 07 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 49 2C E7 8F 83 CA 6A 61 FF 81 F0 F0
0060 | 10 DA C4 42 CD 1D 47 CD 7D 1B C7 21 27 37 8C E3
0070 | B8 BE FF 5E E0 CF BD A1 22 C6 4E A2 5F 7D F0 9B
0080 | C7 18 91 44 14 12 D1 A4 14 AA ED B3 2B E5 7D 34
0090 | C1 02 A5 D6 C7 78 0D 88 3E 7A 1F 70 34 4D BB 7B
00A0 | 30 9E 69 40 EE 85 7C 43 70 BD E1 BD 7B F8 6F E7
00B0 | 5D 47 9A 16 94 BE 23 6B 44 E5 A5 20 4D CF B1 D8
00C0 | 5F A4 38 4D C6 BF A1 E1 A3 D6 A5 80 45 8C 9D A2
00D0 | 38 E0 66 05 32 47 0B 54 E8 F5 62 77 26 49 56 98
00E0 | FE BA 68 1B 1F AB 46 AA 00 3F 2E 01 11 6F E0 D6
00F0 | 66 18 9A 3B 56 DB EB FE 3C AC A4 26 7F 46 A0 81
0100 | 9F E8 E6 C2 75 DC 07 EA 75 62 F2 8F 77 02 56 3F
0110 | FD 6E 1D A6 ED 17 BC BC 16 00 5E B7 6D 1A 58 62
0120 | DB 7B 06 D7 61 B7 78 BF 21 1B AD 88 E3 2A 80 C4
0130 | E7 57 3E 2F CF CC 5A 84 FA 7B 83 77 F3 89 3E 28
0140 | 99 AB DD 47 32 14 F7 C0 24 9C 4C A8 8B A1 F3 66
0150 | 5C 8F 9F 28</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 = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>940A0C0061A87065</code></td>
<td><code>30080F00D9BA7065</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 = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>043F0B7571000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1057715569</td>
<td><code>043D9EAF69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1033809769</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>04595DDE3F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1499323967</td>
<td><code>04431DCC07000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1126026247</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 = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001004EA2380641698C2596000043</code> <code>E7D90FE474A067D6FA95E763F78A098B</code> <code>4C5B43EA7554676363D4C0AF73359317</code> <code>E20272DD3FBBA6F43F6A79D4E6994E35</code> <code>850896A7AE793D43A21ECABFA4BBFB39</code> <code>537FD30121551BAF514224A89BE8D0BF</code> <code>088203596A17B4490CB4A9810B2DF800</code> <code>A32F33FB4FF8FFEE551478F7848D3861</code> <code>DAA94C0D6C497B7F22E90C7F9678C84C</code> <code>234952A3BA4533EFF7F1A0F6F08BD9EC</code> <code>77DCF2CB50D5C6689DD4C1955BAD8C7E</code> <code>2678482BB3C55F19639A59BBF682B9E0</code> <code>E46BBC27D97EDF3473F6C487312E23A4</code> <code>8A9E07504203D5031C39F79053FFE356</code> <code>359ECE4FDEB94805E217DC7FBFDDED98</code> <code>03A4C63AE336441A86F8697512D6B78D</code><br> <code>62745B61</code></td>
<td><code>FE000100492CE78F83CA6A61FF81F0F0</code> <code>10DAC442CD1D47CD7D1BC72127378CE3</code> <code>B8BEFF5EE0CFBDA122C64EA25F7DF09B</code> <code>C71891441412D1A414AAEDB32BE57D34</code> <code>C102A5D6C7780D883E7A1F70344DBB7B</code> <code>309E6940EE857C4370BDE1BD7BF86FE7</code> <code>5D479A1694BE236B44E5A5204DCFB1D8</code> <code>5FA4384DC6BFA1E1A3D6A580458C9DA2</code> <code>38E0660532470B54E8F5627726495698</code> <code>FEBA681B1FAB46AA003F2E01116FE0D6</code> <code>66189A3B56DBEBFE3CACA4267F46A081</code> <code>9FE8E6C275DC07EA7562F28F7702563F</code> <code>FD6E1DA6ED17BCBC16005EB76D1A5862</code> <code>DB7B06D761B778BF211BAD88E32A80C4</code> <code>E7573E2FCFCC5A84FA7B8377F3893E28</code> <code>99ABDD473214F7C0249C4CA88BA1F366</code><br> <code>5C8F9F28</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8
<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 30 BC 7F 62 A8 70 65
0010 | 94 02 00 00 5C 07 E8 D0 71 4B B1 C3 0B B2 D2 9E
0020 | 0D A3 4A 1E D3 72 C3 D6 6D 43 E5 FE 7F 4B 90 E8
0030 | 0C 49 C1 D2 AF FE FB CC FE 50 02 00 58 DD 2E 14
0040 | D6 31 DC 5D 37 93 23 31 7F B5 B6 6B DB 20 4D FA
0050 | D4 60 2D 49 D7 EC 42 E7 8E 68 32 95 61 AC C9 D3
0060 | 00 B3 2C 1D A8 1A AE 5E BE B4 09 17 E4 A8 84 47
0070 | 73 2A 37 E3 CA 72 6C 60 77 BE BC 3D E6 86 C5 73
0080 | 0D 4E 41 8C 36 51 BE 7B 56 0F 28 92 79 AC 02 6F
0090 | 30 11 DC 2D 91 8D C7 01 BB 03 46 2D A1 68 68 E6
00A0 | 25 57 03 5E B8 73 45 50 C2 62 7F 39 61 CE 3D B3
00B0 | AA 80 32 09 DC 89 29 52 F7 03 91 85 5C C9 25 8A
00C0 | 48 55 BA 76 80 82 75 DD F8 67 B2 44 05 EA 93 40
00D0 | 48 49 6A 95 5E B5 0A 70 5F E2 03 23 EF F6 19 D5
00E0 | 07 D4 CA 0C 8E 87 52 54 D7 B6 04 7F 6D E2 B2 D8
00F0 | 8C 4A 47 E4 63 18 A1 88 BB 1C 6E 41 C7 C2 F9 91
0100 | FC 92 60 1A 6E C4 3E 51 64 57 13 40 BC EA 2D CC
0110 | 27 81 1F 45 B4 1D 70 DB D7 5D 0D 62 51 1E D2 21
0120 | 7C F0 62 E4 5A D7 C5 B1 8F 58 C7 57 FF 78 1E 7E
0130 | 60 09 F6 DB DD 40 84 BA 98 A5 EF 8C CB D1 67 AE
0140 | F5 4D 63 B9 E8 D5 F3 B4 D7 89 6B D9 D8 7C 07 2C
0150 | 06 45 9C 0F D6 65 82 21 F7 DE 7F A8 D9 5D 2B 2F
0160 | 7A 4C 37 9F D5 8C 9D 9D 6B 03 24 A2 BA 91 F4 85
0170 | 6E DC B8 24 B9 38 67 15 EA 6B 8C CA 96 2A C1 A5
0180 | BB 8E 4F 33 17 AC AB 8C C8 93 1A B2 D5 63 77 5D
0190 | C1 C2 FD 92 BB 94 B9 7E B8 13 56 A1 2B 72 C2 CF
01A0 | 78 5D 74 DB 15 52 20 37 6F E3 4F 1D BE C7 11 6E
01B0 | 89 BB B2 1B 31 BE A1 0B E0 31 55 54 8B 3A 61 34
01C0 | C7 B0 F6 22 0D F3 39 04 52 32 14 88 18 18 E7 91
01D0 | 57 7A A8 DE 23 4C BC 79 8D C4 E0 1E FD 42 EC 6D
01E0 | E2 13 4B 80 40 03 41 80 84 50 13 23 61 D4 E8 1E
01F0 | 51 A7 F6 DD 83 F8 13 05 CA 0A 93 0C 5B 92 AB A4
0200 | BD 4F DC 68 EE 0D 03 49 7C D9 5C 29 9B 3B F0 21
0210 | F3 67 1B AE 1D EC B0 9A D0 2B A3 B3 00 40 57 3C
0220 | BA 7E 93 E5 D2 83 7C 5D 69 71 97 57 C2 07 8F 40
0230 | E2 05 66 22 D4 38 4F 8D 73 78 AA 32 B4 4F F1 D9
0240 | 69 E1 CE 87 D6 97 5D 9B 72 8F 8D DE 8D D3 2C 13
0250 | BB 6B F5 FD 89 FB 88 C2 C3 75 D6 DE 7A 92 E9 D3
0260 | D8 86 6E 58 B3 65 90 B7 09 FE 6F D0 95 95 95 BF
0270 | 7B C0 BD D0 E6 6C D8 CC 7A 93 9C AE D2 96 78 0E
0280 | 82 A6 55 CD 91 C9 5B 7B 7F A1 1C 89</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 04 A6 FB D9 BA 70 65
0010 | B0 02 00 00 5C 07 E8 D0 8C 08 57 AA 2E 27 2A 56
0020 | 04 13 E8 05 64 5D EF 49 B5 9D 25 38 AE 48 79 78
0030 | F7 F4 B2 24 D3 82 08 D2 FE 50 02 00 CD 43 28 4C
0040 | 99 C4 85 6A 4E FE B9 30 63 80 1D C6 E1 16 5F 4A
0050 | 64 0A 3E 3D 2A DC 77 EA 1C 2F 9F 94 27 D6 E2 6E
0060 | E8 5C 19 15 C6 58 1A 61 D3 51 10 DA 34 C5 5B 21
0070 | 90 D8 A0 A9 00 D6 4B F0 71 7D A5 71 8D EA 96 99
0080 | D1 89 25 F6 1B 0F 5C 12 35 07 5D BB C5 C8 DC 68
0090 | 61 F2 87 60 46 29 04 43 42 F1 02 82 4E 91 21 8C
00A0 | FD 9C 18 03 06 07 C9 18 8A 23 2C B5 80 E0 D7 36
00B0 | 10 E5 D4 E2 12 EB 6A 32 53 58 53 6C E4 5F D4 A3
00C0 | 2D 15 FD 21 9C 0E 1E 1E FF 00 D5 8E 2C AE 99 B5
00D0 | AF C0 D1 F5 58 A3 66 2B 01 29 BF FD F9 94 BD 90
00E0 | 16 79 79 40 C4 17 B0 32 A3 D0 FA 5F 1E 02 64 6F
00F0 | CA CF 6C A3 35 B0 8B 26 9C D7 68 66 05 A9 77 EA
0100 | 06 A9 EE AC 1B 22 09 BE FD 3E B3 5B C8 02 C2 0A
0110 | 2F 68 2E 61 B0 25 3A 74 64 56 CB 55 16 29 55 5D
0120 | 15 A6 D3 C3 13 08 8B 56 E1 C8 3A 6F D3 CF F4 F4
0130 | 62 A7 18 5A E1 2D 91 6B 1B 21 0B A4 EE 0B E5 9F
0140 | 33 E0 BB AF E1 27 D3 CA 15 CE 57 CD 8C A4 B3 7B
0150 | 37 8D D3 74 F2 A1 79 4E 9F 56 83 9B 3B 4B 1F C2
0160 | 86 5C 41 72 03 74 39 06 22 A1 ED A4 79 7B 4F EB
0170 | D2 A2 67 D1 AC AB 37 94 BB D4 B1 A4 F9 F0 CE E9
0180 | 64 83 2D D9 74 D7 CC 27 99 2D 2F 21 79 D0 B0 37
0190 | 9A DB F7 E9 74 42 74 24 5B E7 D8 7C 87 F4 6C 15
01A0 | DF 95 89 57 D3 BD 96 67 61 95 74 30 70 64 DF BE
01B0 | 7F AA AA E3 AC CC 09 D6 18 3A D5 E9 39 B0 1C FF
01C0 | 9A C9 FE DF E3 76 61 9F 1A C5 E1 28 68 48 B5 F3
01D0 | F1 03 65 50 93 F2 28 81 D9 57 14 6E 95 D1 42 B2
01E0 | A3 81 1E 7E 37 12 2A 81 44 CB 1E 59 36 EE AD 91
01F0 | A9 F4 A8 88 C2 A3 84 9E 92 DF 22 7F 5B DC 65 89
0200 | A1 4B BF 47 25 5B F1 C3 3D 4E D8 D2 80 F4 77 47
0210 | 78 8A 8C 03 7F D9 24 9D 91 F7 5C 59 A3 D9 9B E1
0220 | DC 70 96 40 1C FD AE CE 28 D6 D0 1E 31 91 42 85
0230 | EE 44 26 36 6E 4A 10 61 6A 07 F2 BE AE 96 8F 46
0240 | D7 08 62 F9 55 FC B2 D7 46 93 E5 2F 06 B1 CC 3D
0250 | 66 93 42 CC 05 35 D7 13 52 A9 F2 7B F9 07 82 1E
0260 | 83 CA EC 9A 64 11 A7 E1 1C 75 AB C7 F7 7A AE 8D
0270 | 2D DE 1C 0A F5 52 DC 4F 85 35 03 68 85 59 B4 1C
0280 | 7F 63 46 B7 2E 9C 8E 61 A5 6E 5F A8</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 = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0130BC7F62A87065</code></td>
<td><code>0104A6FBD9BA7065</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>94020000</code> (660 in decimal)</td>
<td><code>B0020000</code> (688 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE50020058DD2E14D631DC5D37932331</code> <code>7FB5B66BDB204DFAD4602D49D7EC42E7</code> <code>8E68329561ACC9D300B32C1DA81AAE5E</code> <code>BEB40917E4A88447732A37E3CA726C60</code> <code>77BEBC3DE686C5730D4E418C3651BE7B</code> <code>560F289279AC026F3011DC2D918DC701</code> <code>BB03462DA16868E62557035EB8734550</code> <code>C2627F3961CE3DB3AA803209DC892952</code> <code>F70391855CC9258A4855BA76808275DD</code> <code>F867B24405EA934048496A955EB50A70</code> <code>5FE20323EFF619D507D4CA0C8E875254</code> <code>D7B6047F6DE2B2D88C4A47E46318A188</code> <code>BB1C6E41C7C2F991FC92601A6EC43E51</code> <code>64571340BCEA2DCC27811F45B41D70DB</code> <code>D75D0D62511ED2217CF062E45AD7C5B1</code> <code>8F58C757FF781E7E6009F6DBDD4084BA</code> <code>98A5EF8CCBD167AEF54D63B9E8D5F3B4</code> <code>D7896BD9D87C072C06459C0FD6658221</code> <code>F7DE7FA8D95D2B2F7A4C379FD58C9D9D</code> <code>6B0324A2BA91F4856EDCB824B9386715</code> <code>EA6B8CCA962AC1A5BB8E4F3317ACAB8C</code> <code>C8931AB2D563775DC1C2FD92BB94B97E</code> <code>B81356A12B72C2CF785D74DB15522037</code> <code>6FE34F1DBEC7116E89BBB21B31BEA10B</code> <code>E03155548B3A6134C7B0F6220DF33904</code> <code>523214881818E791577AA8DE234CBC79</code> <code>8DC4E01EFD42EC6DE2134B8040034180</code> <code>8450132361D4E81E51A7F6DD83F81305</code> <code>CA0A930C5B92ABA4BD4FDC68EE0D0349</code> <code>7CD95C299B3BF021F3671BAE1DECB09A</code> <code>D02BA3B30040573CBA7E93E5D2837C5D</code> <code>69719757C2078F40E2056622D4384F8D</code> <code>7378AA32B44FF1D969E1CE87D6975D9B</code> <code>728F8DDE8DD32C13BB6BF5FD89FB88C2</code> <code>C375D6DE7A92E9D3D8866E58B36590B7</code> <code>09FE6FD0959595BF7BC0BDD0E66CD8CC</code> <code>7A939CAED296780E82A655CD91C95B7B</code><br> <code>7FA11C89</code></td>
<td><code>FE500200CD43284C99C4856A4EFEB930</code> <code>63801DC6E1165F4A640A3E3D2ADC77EA</code> <code>1C2F9F9427D6E26EE85C1915C6581A61</code> <code>D35110DA34C55B2190D8A0A900D64BF0</code> <code>717DA5718DEA9699D18925F61B0F5C12</code> <code>35075DBBC5C8DC6861F2876046290443</code> <code>42F102824E91218CFD9C18030607C918</code> <code>8A232CB580E0D73610E5D4E212EB6A32</code> <code>5358536CE45FD4A32D15FD219C0E1E1E</code> <code>FF00D58E2CAE99B5AFC0D1F558A3662B</code> <code>0129BFFDF994BD9016797940C417B032</code> <code>A3D0FA5F1E02646FCACF6CA335B08B26</code> <code>9CD7686605A977EA06A9EEAC1B2209BE</code> <code>FD3EB35BC802C20A2F682E61B0253A74</code> <code>6456CB551629555D15A6D3C313088B56</code> <code>E1C83A6FD3CFF4F462A7185AE12D916B</code> <code>1B210BA4EE0BE59F33E0BBAFE127D3CA</code> <code>15CE57CD8CA4B37B378DD374F2A1794E</code> <code>9F56839B3B4B1FC2865C417203743906</code> <code>22A1EDA4797B4FEBD2A267D1ACAB3794</code> <code>BBD4B1A4F9F0CEE964832DD974D7CC27</code> <code>992D2F2179D0B0379ADBF7E974427424</code> <code>5BE7D87C87F46C15DF958957D3BD9667</code> <code>619574307064DFBE7FAAAAE3ACCC09D6</code> <code>183AD5E939B01CFF9AC9FEDFE376619F</code> <code>1AC5E1286848B5F3F103655093F22881</code> <code>D957146E95D142B2A3811E7E37122A81</code> <code>44CB1E5936EEAD91A9F4A888C2A3849E</code> <code>92DF227F5BDC6589A14BBF47255BF1C3</code> <code>3D4ED8D280F47747788A8C037FD9249D</code> <code>91F75C59A3D99BE1DC7096401CFDAECE</code> <code>28D6D01E31914285EE4426366E4A1061</code> <code>6A07F2BEAE968F46D70862F955FCB2D7</code> <code>4693E52F06B1CC3D669342CC0535D713</code> <code>52A9F27BF907821E83CAEC9A6411A7E1</code> <code>1C75ABC7F77AAE8D2DDE1C0AF552DC4F</code> <code>853503688559B41C7F6346B72E9C8E61</code><br> <code>A56E5FA8</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 01F8D5324DEBFE218C34AA9097EB801DE041D93EB5434C6B3C1A252C8
<!-- 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 = 58DD2E14D631DC5D379323317FB5B66BDB204DFAD4602D49D7EC42E78E68329561ACC9D300B32C1DA81AAE5EBEB40917E4A88447732A37E3CA726C6077BEBC3DE686C5730D4E418C3651BE7B560F289279AC026F3011DC2D918DC701BB03462DA16868E62557035EB8734550C2627F3961CE3DB3AA803209DC892952F70391855CC9258A4855BA76808275DDF867B24405EA934048496A955EB50A705FE20323EFF619D507D4CA0C8E875254D7B6047F6DE2B2D88C4A47E46318A188BB1C6E41C7C2F991FC92601A6EC43E5164571340BCEA2DCC27811F45B41D70DBD75D0D62511ED2217CF062E45AD7C5B18F58C757FF781E7E6009F6DBDD4084BA98A5EF8CCBD167AEF54D63B9E8D5F3B4D7896BD9D87C072C06459C0FD6658221F7DE7FA8D95D2B2F7A4C379FD58C9D9D6B0324A2BA91F4856EDCB824B9386715EA6B8CCA962AC1A5BB8E4F3317ACAB8CC8931AB2D563775DC1C2FD92BB94B97EB81356A12B72C2CF785D74DB155220376FE34F1DBEC7116E89BBB21B31BEA10BE03155548B3A6134C7B0F6220DF33904523214881818E791577AA8DE234CBC798DC4E01EFD42EC6DE2134B80400341808450132361D4E81E51A7F6DD83F81305CA0A930C5B92ABA4BD4FDC68EE0D03497CD95C299B3BF021F3671BAE1DECB09AD02BA3B30040573CBA7E93E5D2837C5D69719757C2078F40E2056622D4384F8D7378AA32B44FF1D969E1CE87D6975D9B728F8DDE8DD32C13BB6BF5FD89FB88C2C375D6DE7A92E9D3D8866E58B36590B709FE6FD0959595BF7BC0BDD0E66CD8CC7A939CAED296780E82A655CD91C95B7B7FA11C89
tmp_aes_key = 3FE4B2573D39B796E3E754BAD7E5694B779B2E5CDC24E7BBC8644EA592EB3C50
tmp_aes_iv = 061B8FEC4658426330A47819BE55E3AE666E2A1D50FD3F0BC8BFF5AA72E98ABF</code></pre>
<pre><code>encrypted_answer = CD43284C99C4856A4EFEB93063801DC6E1165F4A640A3E3D2ADC77EA1C2F9F9427D6E26EE85C1915C6581A61D35110DA34C55B2190D8A0A900D64BF0717DA5718DEA9699D18925F61B0F5C1235075DBBC5C8DC6861F287604629044342F102824E91218CFD9C18030607C9188A232CB580E0D73610E5D4E212EB6A325358536CE45FD4A32D15FD219C0E1E1EFF00D58E2CAE99B5AFC0D1F558A3662B0129BFFDF994BD9016797940C417B032A3D0FA5F1E02646FCACF6CA335B08B269CD7686605A977EA06A9EEAC1B2209BEFD3EB35BC802C20A2F682E61B0253A746456CB551629555D15A6D3C313088B56E1C83A6FD3CFF4F462A7185AE12D916B1B210BA4EE0BE59F33E0BBAFE127D3CA15CE57CD8CA4B37B378DD374F2A1794E9F56839B3B4B1FC2865C41720374390622A1EDA4797B4FEBD2A267D1ACAB3794BBD4B1A4F9F0CEE964832DD974D7CC27992D2F2179D0B0379ADBF7E9744274245BE7D87C87F46C15DF958957D3BD9667619574307064DFBE7FAAAAE3ACCC09D6183AD5E939B01CFF9AC9FEDFE376619F1AC5E1286848B5F3F103655093F22881D957146E95D142B2A3811E7E37122A8144CB1E5936EEAD91A9F4A888C2A3849E92DF227F5BDC6589A14BBF47255BF1C33D4ED8D280F47747788A8C037FD9249D91F75C59A3D99BE1DC7096401CFDAECE28D6D01E31914285EE4426366E4A10616A07F2BEAE968F46D70862F955FCB2D74693E52F06B1CC3D669342CC0535D71352A9F27BF907821E83CAEC9A6411A7E11C75ABC7F77AAE8D2DDE1C0AF552DC4F853503688559B41C7F6346B72E9C8E61A56E5FA8
tmp_aes_key = E72ED0F8639D01697E28103761678428DD27A841FE88E8661CE40117CA929698
tmp_aes_iv = 5121E58CBC411F1BC521208D884CF6A566D0EE9A98CD65C09A9ABFEC4A86DA13</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 07ECA4101914AB5A75FFBC8811821F95B5963665BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBCC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005603B6C3F0532C6D21D97B0DA21166CB7A6AB0D1AAABC8D38F2F9CB21072DEB29F6509473A8BE01587314115D07D16C8A613E4371F89A529C4F78EBE4CF6CC2887AE3BC0A024938C8647991C15CADEE89D18827770FBF8393752A77482BC5A724CA12A1186FCA7537217CC5CE5EC0AA779142B688E6A5CBEA8C434F09ACCBEA8724F94CE351110369F6B26FC7420FED13F47AB02B95824C04727753CDE29B0EB5E3FAE7BDB7237766DD41A0BA6B03D9D9C1D97ECB9E53686228FE1DFB990AFCC79A0D12693A80D859E1FC38AF02D92A14D4456DD847F08E8FA8DD12AE511D894D3E441196D580030CCD1F1583FCD29227DC1FA6B1A1AC1398A54BDD37E7FB8D662A870655D0385B79FF60FAC
answer = BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBCC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005603B6C3F0532C6D21D97B0DA21166CB7A6AB0D1AAABC8D38F2F9CB21072DEB29F6509473A8BE01587314115D07D16C8A613E4371F89A529C4F78EBE4CF6CC2887AE3BC0A024938C8647991C15CADEE89D18827770FBF8393752A77482BC5A724CA12A1186FCA7537217CC5CE5EC0AA779142B688E6A5CBEA8C434F09ACCBEA8724F94CE351110369F6B26FC7420FED13F47AB02B95824C04727753CDE29B0EB5E3FAE7BDB7237766DD41A0BA6B03D9D9C1D97ECB9E53686228FE1DFB990AFCC79A0D12693A80D859E1FC38AF02D92A14D4456DD847F08E8FA8DD12AE511D894D3E441196D580030CCD1F1583FCD29227DC1FA6B1A1AC1398A54BDD37E7FB8D662A870655D0385B79FF60FAC</code></pre>
<pre><code>answer_with_hash = 39C14CB490051C2633CEA09D075C9D4CA64F6CE4BA0D89B58C0857AA2E272A560413E805645DEF49B59D2538AE487978F7F4B224D38208D203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003CFA36C9475A852E62BF4EA6E1F0F6F950DAED6020304F8FB2297BFB6190FE150419E21F159DAD1981125C0346F2CF8DE6517FAA67E121AEDFEB6F2E3D684BA2EDECE72F9BA5779A4E2E0C419AF3D777C317C70C0A88E6490C41A48943C69BBC68F5BE5F788B00860C023F9C27440BA6D58C8590F60776BBC8FBEAD351A1D695BBE4A3C38E1002A5B61C304B87B40BB1E8FC9B5AA5181CA598D39C3CA0B534FAB93AB744197B1DD5F918F50DC09BC94630EB000CCDFF1F6F0636B9F3598B5F35BE8E06D2FFC80112B98973FC178AC6AB5B186FD3B9406E1ACAE8C86CA99574EF9B8A3DCD857B9C856072800DE97CCF81707FFE564396A8CD9B17B97359DE2100D9BA70651FFC5DAD646562E2
answer = BA0D89B58C0857AA2E272A560413E805645DEF49B59D2538AE487978F7F4B224D38208D203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003CFA36C9475A852E62BF4EA6E1F0F6F950DAED6020304F8FB2297BFB6190FE150419E21F159DAD1981125C0346F2CF8DE6517FAA67E121AEDFEB6F2E3D684BA2EDECE72F9BA5779A4E2E0C419AF3D777C317C70C0A88E6490C41A48943C69BBC68F5BE5F788B00860C023F9C27440BA6D58C8590F60776BBC8FBEAD351A1D695BBE4A3C38E1002A5B61C304B87B40BB1E8FC9B5AA5181CA598D39C3CA0B534FAB93AB744197B1DD5F918F50DC09BC94630EB000CCDFF1F6F0636B9F3598B5F35BE8E06D2FFC80112B98973FC178AC6AB5B186FD3B9406E1ACAE8C86CA99574EF9B8A3DCD857B9C856072800DE97CCF81707FFE564396A8CD9B17B97359DE2100D9BA70651FFC5DAD646562E2</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 71 4B B1 C3 0B B2 D2 9E 0D A3 4A 1E
0010 | D3 72 C3 D6 6D 43 E5 FE 7F 4B 90 E8 0C 49 C1 D2
0020 | AF FE FB CC 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 8C 08 57 AA 2E 27 2A 56 04 13 E8 05
0010 | 64 5D EF 49 B5 9D 25 38 AE 48 79 78 F7 F4 B2 24
0020 | D3 82 08 D2 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 = BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBC
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 | 56 03 B6 C3 F0 53 2C 6D 21 D9 7B 0D A2 11 66 CB
0140 | 7A 6A B0 D1 AA AB C8 D3 8F 2F 9C B2 10 72 DE B2
0150 | 9F 65 09 47 3A 8B E0 15 87 31 41 15 D0 7D 16 C8
0160 | A6 13 E4 37 1F 89 A5 29 C4 F7 8E BE 4C F6 CC 28
0170 | 87 AE 3B C0 A0 24 93 8C 86 47 99 1C 15 CA DE E8
0180 | 9D 18 82 77 70 FB F8 39 37 52 A7 74 82 BC 5A 72
0190 | 4C A1 2A 11 86 FC A7 53 72 17 CC 5C E5 EC 0A A7
01A0 | 79 14 2B 68 8E 6A 5C BE A8 C4 34 F0 9A CC BE A8
01B0 | 72 4F 94 CE 35 11 10 36 9F 6B 26 FC 74 20 FE D1
01C0 | 3F 47 AB 02 B9 58 24 C0 47 27 75 3C DE 29 B0 EB
01D0 | 5E 3F AE 7B DB 72 37 76 6D D4 1A 0B A6 B0 3D 9D
01E0 | 9C 1D 97 EC B9 E5 36 86 22 8F E1 DF B9 90 AF CC
01F0 | 79 A0 D1 26 93 A8 0D 85 9E 1F C3 8A F0 2D 92 A1
0200 | 4D 44 56 DD 84 7F 08 E8 FA 8D D1 2A E5 11 D8 94
0210 | D3 E4 41 19 6D 58 00 30 CC D1 F1 58 3F CD 29 22
0220 | 7D C1 FA 6B 1A 1A C1 39 8A 54 BD D3 7E 7F B8 D6
0230 | 62 A8 70 65</code></pre>
0130 | 3C FA 36 C9 47 5A 85 2E 62 BF 4E A6 E1 F0 F6 F9
0140 | 50 DA ED 60 20 30 4F 8F B2 29 7B FB 61 90 FE 15
0150 | 04 19 E2 1F 15 9D AD 19 81 12 5C 03 46 F2 CF 8D
0160 | E6 51 7F AA 67 E1 21 AE DF EB 6F 2E 3D 68 4B A2
0170 | ED EC E7 2F 9B A5 77 9A 4E 2E 0C 41 9A F3 D7 77
0180 | C3 17 C7 0C 0A 88 E6 49 0C 41 A4 89 43 C6 9B BC
0190 | 68 F5 BE 5F 78 8B 00 86 0C 02 3F 9C 27 44 0B A6
01A0 | D5 8C 85 90 F6 07 76 BB C8 FB EA D3 51 A1 D6 95
01B0 | BB E4 A3 C3 8E 10 02 A5 B6 1C 30 4B 87 B4 0B B1
01C0 | E8 FC 9B 5A A5 18 1C A5 98 D3 9C 3C A0 B5 34 FA
01D0 | B9 3A B7 44 19 7B 1D D5 F9 18 F5 0D C0 9B C9 46
01E0 | 30 EB 00 0C CD FF 1F 6F 06 36 B9 F3 59 8B 5F 35
01F0 | BE 8E 06 D2 FF C8 01 12 B9 89 73 FC 17 8A C6 AB
0200 | 5B 18 6F D3 B9 40 6E 1A CA E8 C8 6C A9 95 74 EF
0210 | 9B 8A 3D CD 85 7B 9C 85 60 72 80 0D E9 7C CF 81
0220 | 70 7F FE 56 43 96 A8 CD 9B 17 B9 73 59 DE 21 00
0230 | D9 BA 70 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 = BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBC
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBC
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001005603B6C3F0532C6D21D97B0D</code> <code>A21166CB7A6AB0D1AAABC8D38F2F9CB2</code> <code>1072DEB29F6509473A8BE01587314115</code> <code>D07D16C8A613E4371F89A529C4F78EBE</code> <code>4CF6CC2887AE3BC0A024938C8647991C</code> <code>15CADEE89D18827770FBF8393752A774</code> <code>82BC5A724CA12A1186FCA7537217CC5C</code> <code>E5EC0AA779142B688E6A5CBEA8C434F0</code> <code>9ACCBEA8724F94CE351110369F6B26FC</code> <code>7420FED13F47AB02B95824C04727753C</code> <code>DE29B0EB5E3FAE7BDB7237766DD41A0B</code> <code>A6B03D9D9C1D97ECB9E53686228FE1DF</code> <code>B990AFCC79A0D12693A80D859E1FC38A</code> <code>F02D92A14D4456DD847F08E8FA8DD12A</code> <code>E511D894D3E441196D580030CCD1F158</code> <code>3FCD29227DC1FA6B1A1AC1398A54BDD3</code><br> <code>7E7FB8D6</code></td>
<td><code>FE0001003CFA36C9475A852E62BF4EA6</code> <code>E1F0F6F950DAED6020304F8FB2297BFB</code> <code>6190FE150419E21F159DAD1981125C03</code> <code>46F2CF8DE6517FAA67E121AEDFEB6F2E</code> <code>3D684BA2EDECE72F9BA5779A4E2E0C41</code> <code>9AF3D777C317C70C0A88E6490C41A489</code> <code>43C69BBC68F5BE5F788B00860C023F9C</code> <code>27440BA6D58C8590F60776BBC8FBEAD3</code> <code>51A1D695BBE4A3C38E1002A5B61C304B</code> <code>87B40BB1E8FC9B5AA5181CA598D39C3C</code> <code>A0B534FAB93AB744197B1DD5F918F50D</code> <code>C09BC94630EB000CCDFF1F6F0636B9F3</code> <code>598B5F35BE8E06D2FFC80112B98973FC</code> <code>178AC6AB5B186FD3B9406E1ACAE8C86C</code> <code>A99574EF9B8A3DCD857B9C856072800D</code> <code>E97CCF81707FFE564396A8CD9B17B973</code><br> <code>59DE2100</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>62A87065</code> (1701881954 in decimal)</td>
<td><code>D9BA7065</code> (1701886681 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBC
<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 = 0EEC74722391560E214D4AD0B17120AE4052148226120BAF2A12625066AA29255C2D038DFC97A3BCC4FD7F3B4A843DBA9B0199976F45625C80CDDA6EBD3F4AFFFCE2C5858CACBE69E149F99A543B3DF91D37ABDE36E89D0F52D35AE0C8F7B36086CCAFB792A67BCD2CB6901D56665545F0D7DD23BC0E07E0076BA7FAAA0F203FF78A9DE315D996A04647520D1FF3431DA8C4144EB88A75B305761B0CAA1E1E690673780CE89DA53E658D0A3EC7ED60E12BD2A9733288F875169C4C98D7644C7BC2FA3CCB2F864667B5B8E6F2E2345DD6D0C376AE591B6C70CF643698B5921B175179BDA90AB4F55CEBDBE153FC56897C468C13E7FC1DBE2C1F5ADA12AB0FB9E7</code></pre>
<pre><code>b = FF46A644DE3E1D0D15B1DF588E6E6CC4D8184D09043800C9EDA91F7D31EDA2D395040FFED3C210B11491B67D184D0F116AE510348D0CC0C666348DCA2943BF020D490E88CF7D6C50C6DBCEA7E61039FDE2D5A42890B96F3CB8CC9B803093999954FDEE3A5338A1AE55BF6C27E71C3799C6DF5CBC0369C181C794D13516E6A5B9CAE21189112A1D15C3722C168BA482DE131346C05DC38F61208044FAC7B6200696D125ABF4500AAE31D91A9EE4D9C9FEEDA6CCA9C946C16558962FFA47AD97258DDD4AFB4224C7347E542C7F72533DF161163C9112BC707AA7056165B4E029C534CD17EED194C1A6108A3A8B6DD0C2742D4FC5010795A79E2EA9239F82461C40</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 = 4C0AD051AA7FECFE57A4BDE64EC466ABA7708878C6913614A82ACE0A2E0B500D8AEA4032774EDFACC94A4FE955D6D55BC12E977A06B29268D97873E32CBF788905770D2F9C8E2211EE6991D23DBE32BCB1B6F337C42F8B45C5E56B9A8D0DDC70837F773F095057F6C712A938EBA2AE63490C4B3DEBA344F9D92AA535BE55B1E01FB002612A05655E040D0A4249F1098BD75DFFA83EF41A2051FEB659E084DB3460F89837E723A9A83624CC9952A534198F58D0A79789501BB55520D18280D56F0DC82A61436746D2B066A17674104AB415FF33C672A5C00A3B49BC71ED526161EE5FDE879CCFC0544130E474715F0C40226610F3F17514DB7F4C87680BD5D601</code></pre>
<pre><code>g_b = 259EBAEE7B5CD665A541B4BB0DF361E70084D27C85D10478BBD4191F5087EA2AB82C77E3797F21FFA2881CCA27CA3BEEBB7D98E642AE4B2F14525E886FB3BBA8FDF557FF02096B0AEBC48D19819C7B80E3F608B19CA178667396D1558D0ECB241B35913CF87FED52EAD65FA26D0F41DEF42FD4CBB5C044044C38274C4461579B168BAA5836EF39DE5087413125ABE21D1B2D3FD849F5B3C1429633315578F21188268DDD8C7CF825ED1AB28D5D3CF7CC673D2392EDE26CE3A1A22A1C309C533AFC35139FF3FAD9048BF24BB41308DC862731E4A602C0F75914EE118217F5EE12E20BF93D6BF31B37B937526C955830C017138FC004CA5DF48D0F288E8CDF4C80</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 71 4B B1 C3 0B B2 D2 9E 0D A3 4A 1E
0010 | D3 72 C3 D6 6D 43 E5 FE 7F 4B 90 E8 0C 49 C1 D2
0020 | AF FE FB CC 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 4C 0A D0 51 AA 7F EC FE 57 A4 BD E6 4E C4 66 AB
0040 | A7 70 88 78 C6 91 36 14 A8 2A CE 0A 2E 0B 50 0D
0050 | 8A EA 40 32 77 4E DF AC C9 4A 4F E9 55 D6 D5 5B
0060 | C1 2E 97 7A 06 B2 92 68 D9 78 73 E3 2C BF 78 89
0070 | 05 77 0D 2F 9C 8E 22 11 EE 69 91 D2 3D BE 32 BC
0080 | B1 B6 F3 37 C4 2F 8B 45 C5 E5 6B 9A 8D 0D DC 70
0090 | 83 7F 77 3F 09 50 57 F6 C7 12 A9 38 EB A2 AE 63
00A0 | 49 0C 4B 3D EB A3 44 F9 D9 2A A5 35 BE 55 B1 E0
00B0 | 1F B0 02 61 2A 05 65 5E 04 0D 0A 42 49 F1 09 8B
00C0 | D7 5D FF A8 3E F4 1A 20 51 FE B6 59 E0 84 DB 34
00D0 | 60 F8 98 37 E7 23 A9 A8 36 24 CC 99 52 A5 34 19
00E0 | 8F 58 D0 A7 97 89 50 1B B5 55 20 D1 82 80 D5 6F
00F0 | 0D C8 2A 61 43 67 46 D2 B0 66 A1 76 74 10 4A B4
0100 | 15 FF 33 C6 72 A5 C0 0A 3B 49 BC 71 ED 52 61 61
0110 | EE 5F DE 87 9C CF C0 54 41 30 E4 74 71 5F 0C 40
0120 | 22 66 10 F3 F1 75 14 DB 7F 4C 87 68 0B D5 D6 01</code></pre>
<pre><code>0000 | 54 B6 43 66 8C 08 57 AA 2E 27 2A 56 04 13 E8 05
0010 | 64 5D EF 49 B5 9D 25 38 AE 48 79 78 F7 F4 B2 24
0020 | D3 82 08 D2 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 25 9E BA EE 7B 5C D6 65 A5 41 B4 BB 0D F3 61 E7
0040 | 00 84 D2 7C 85 D1 04 78 BB D4 19 1F 50 87 EA 2A
0050 | B8 2C 77 E3 79 7F 21 FF A2 88 1C CA 27 CA 3B EE
0060 | BB 7D 98 E6 42 AE 4B 2F 14 52 5E 88 6F B3 BB A8
0070 | FD F5 57 FF 02 09 6B 0A EB C4 8D 19 81 9C 7B 80
0080 | E3 F6 08 B1 9C A1 78 66 73 96 D1 55 8D 0E CB 24
0090 | 1B 35 91 3C F8 7F ED 52 EA D6 5F A2 6D 0F 41 DE
00A0 | F4 2F D4 CB B5 C0 44 04 4C 38 27 4C 44 61 57 9B
00B0 | 16 8B AA 58 36 EF 39 DE 50 87 41 31 25 AB E2 1D
00C0 | 1B 2D 3F D8 49 F5 B3 C1 42 96 33 31 55 78 F2 11
00D0 | 88 26 8D DD 8C 7C F8 25 ED 1A B2 8D 5D 3C F7 CC
00E0 | 67 3D 23 92 ED E2 6C E3 A1 A2 2A 1C 30 9C 53 3A
00F0 | FC 35 13 9F F3 FA D9 04 8B F2 4B B4 13 08 DC 86
0100 | 27 31 E4 A6 02 C0 F7 59 14 EE 11 82 17 F5 EE 12
0110 | E2 0B F9 3D 6B F3 1B 37 B9 37 52 6C 95 58 30 C0
0120 | 17 13 8F C0 04 CA 5D F4 8D 0F 28 8E 8C DF 4C 80</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 = BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBC
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001004C0AD051AA7FECFE57A4BDE6</code> <code>4EC466ABA7708878C6913614A82ACE0A</code> <code>2E0B500D8AEA4032774EDFACC94A4FE9</code> <code>55D6D55BC12E977A06B29268D97873E3</code> <code>2CBF788905770D2F9C8E2211EE6991D2</code> <code>3DBE32BCB1B6F337C42F8B45C5E56B9A</code> <code>8D0DDC70837F773F095057F6C712A938</code> <code>EBA2AE63490C4B3DEBA344F9D92AA535</code> <code>BE55B1E01FB002612A05655E040D0A42</code> <code>49F1098BD75DFFA83EF41A2051FEB659</code> <code>E084DB3460F89837E723A9A83624CC99</code> <code>52A534198F58D0A79789501BB55520D1</code> <code>8280D56F0DC82A61436746D2B066A176</code> <code>74104AB415FF33C672A5C00A3B49BC71</code> <code>ED526161EE5FDE879CCFC0544130E474</code> <code>715F0C40226610F3F17514DB7F4C8768</code><br> <code>0BD5D601</code></td>
<td><code>FE000100259EBAEE7B5CD665A541B4BB</code> <code>0DF361E70084D27C85D10478BBD4191F</code> <code>5087EA2AB82C77E3797F21FFA2881CCA</code> <code>27CA3BEEBB7D98E642AE4B2F14525E88</code> <code>6FB3BBA8FDF557FF02096B0AEBC48D19</code> <code>819C7B80E3F608B19CA178667396D155</code> <code>8D0ECB241B35913CF87FED52EAD65FA2</code> <code>6D0F41DEF42FD4CBB5C044044C38274C</code> <code>4461579B168BAA5836EF39DE50874131</code> <code>25ABE21D1B2D3FD849F5B3C142963331</code> <code>5578F21188268DDD8C7CF825ED1AB28D</code> <code>5D3CF7CC673D2392EDE26CE3A1A22A1C</code> <code>309C533AFC35139FF3FAD9048BF24BB4</code> <code>1308DC862731E4A602C0F75914EE1182</code> <code>17F5EE12E20BF93D6BF31B37B937526C</code> <code>955830C017138FC004CA5DF48D0F288E</code><br> <code>8CDF4C80</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 = BA0D89B5714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBC
<!-- 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 = 54B64366714BB1C30BB2D29E0DA34A1ED372C3D66D43E5FE7F4B90E80C49C1D2AFFEFBCC0000000000000000FE0001004C0AD051AA7FECFE57A4BDE64EC466ABA7708878C6913614A82ACE0A2E0B500D8AEA4032774EDFACC94A4FE955D6D55BC12E977A06B29268D97873E32CBF788905770D2F9C8E2211EE6991D23DBE32BCB1B6F337C42F8B45C5E56B9A8D0DDC70837F773F095057F6C712A938EBA2AE63490C4B3DEBA344F9D92AA535BE55B1E01FB002612A05655E040D0A4249F1098BD75DFFA83EF41A2051FEB659E084DB3460F89837E723A9A83624CC9952A534198F58D0A79789501BB55520D18280D56F0DC82A61436746D2B066A17674104AB415FF33C672A5C00A3B49BC71ED526161EE5FDE879CCFC0544130E474715F0C40226610F3F17514DB7F4C87680BD5D601
padding = FE047166BE57A528DFAB1B65
tmp_aes_key = 3FE4B2573D39B796E3E754BAD7E5694B779B2E5CDC24E7BBC8644EA592EB3C50
tmp_aes_iv = 061B8FEC4658426330A47819BE55E3AE666E2A1D50FD3F0BC8BFF5AA72E98ABF</code></pre>
<pre><code>data = 54B643668C0857AA2E272A560413E805645DEF49B59D2538AE487978F7F4B224D38208D20000000000000000FE000100259EBAEE7B5CD665A541B4BB0DF361E70084D27C85D10478BBD4191F5087EA2AB82C77E3797F21FFA2881CCA27CA3BEEBB7D98E642AE4B2F14525E886FB3BBA8FDF557FF02096B0AEBC48D19819C7B80E3F608B19CA178667396D1558D0ECB241B35913CF87FED52EAD65FA26D0F41DEF42FD4CBB5C044044C38274C4461579B168BAA5836EF39DE5087413125ABE21D1B2D3FD849F5B3C1429633315578F21188268DDD8C7CF825ED1AB28D5D3CF7CC673D2392EDE26CE3A1A22A1C309C533AFC35139FF3FAD9048BF24BB41308DC862731E4A602C0F75914EE118217F5EE12E20BF93D6BF31B37B937526C955830C017138FC004CA5DF48D0F288E8CDF4C80
padding = C8E365AD21C981C0509DCDDE
tmp_aes_key = E72ED0F8639D01697E28103761678428DD27A841FE88E8661CE40117CA929698
tmp_aes_iv = 5121E58CBC411F1BC521208D884CF6A566D0EE9A98CD65C09A9ABFEC4A86DA13</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 = 92A899EBE18916C7454F5F53C75969234B53E67FF7AD43DF7D0AB62E32D5B68E0A62C29110C6412D06FC97B0131CA291B3901544131991E42DA9F6390EEB05F710C28E250FD83976F80764173FC6C74E5AA81A7FB55249E77425887E72EFABF8AB3CD122FE22B1333AE95A71AF43BD5BE35488E6356DB2271A659C1B3861EDD021B2111B942B04769055ADDFF57AB6A6EB8917AB4DB09C0180429AAD386F3BD5D205CA9F0E8073E61E95457669E0496135AD21906C670AA3FDF9A85699EDAD9762C773F0BE3821B004D9BA3B47369A628FD362E8FF1F08F57561A54AE2D0539216985365626F2619290CCB4A90A88055E5A13450340CFD528E7E80FA03DEFC264B494E74BB83C5F0F3501F72B4F1E1BE5D82B9B6807EF7EF6035ED7ECD6F826F42B6BF9DB14A37FF5B4B942711C1E6959B0527FEF86C708F416DC0D2D135417F0526D95B48723646158BAE0DB45C2C80</code></pre>
<pre><code>encrypted_data = E314D213DB6C3AB5686B84B871A81F4B0A47033B197C1D9FC1EED30045282D6BA1C36542DD9B8568CE734666CC866346FD7048E59239D6EC4E5886D9BEC7D43D01261435D4964C34BF2723222E288F76118FB0D2B114B15C7009AF6BCD6ADFA8C93F287E9E7F6CADB3E84283126EB9DB7ADD024BAF1E002BC4A3165206A1DA3D6172948B9CDE769234C19975528E3FF5192D076B8BBCCAD01B8D5C072C98D6483D255BAE0CD360ED66D169E4B4BE4B0418CBED8E8816CCE74BE787DE3076A7608700AD34CA7AD33B84B75180CA5E4607DF6B22FD910CDD18062FA38107A76105EA010C9DC2A1D0664711FDDB312095F0B86A901838AC91B6C04B70A9840880276D10B403A263E106441C20DF78C1F856CA246FB8EF7621BD2604C2533B1E727375D2E87F8FF0212957A975DFDE6DF836AD459118F4E7CA93BD8C71863284361A0A784BBB05206337B4AC59888838A485</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 84 C3 06 00 62 A8 70 65
0010 | 78 01 00 00 1F 5F 04 F5 71 4B B1 C3 0B B2 D2 9E
0020 | 0D A3 4A 1E D3 72 C3 D6 6D 43 E5 FE 7F 4B 90 E8
0030 | 0C 49 C1 D2 AF FE FB CC FE 50 01 00 92 A8 99 EB
0040 | E1 89 16 C7 45 4F 5F 53 C7 59 69 23 4B 53 E6 7F
0050 | F7 AD 43 DF 7D 0A B6 2E 32 D5 B6 8E 0A 62 C2 91
0060 | 10 C6 41 2D 06 FC 97 B0 13 1C A2 91 B3 90 15 44
0070 | 13 19 91 E4 2D A9 F6 39 0E EB 05 F7 10 C2 8E 25
0080 | 0F D8 39 76 F8 07 64 17 3F C6 C7 4E 5A A8 1A 7F
0090 | B5 52 49 E7 74 25 88 7E 72 EF AB F8 AB 3C D1 22
00A0 | FE 22 B1 33 3A E9 5A 71 AF 43 BD 5B E3 54 88 E6
00B0 | 35 6D B2 27 1A 65 9C 1B 38 61 ED D0 21 B2 11 1B
00C0 | 94 2B 04 76 90 55 AD DF F5 7A B6 A6 EB 89 17 AB
00D0 | 4D B0 9C 01 80 42 9A AD 38 6F 3B D5 D2 05 CA 9F
00E0 | 0E 80 73 E6 1E 95 45 76 69 E0 49 61 35 AD 21 90
00F0 | 6C 67 0A A3 FD F9 A8 56 99 ED AD 97 62 C7 73 F0
0100 | BE 38 21 B0 04 D9 BA 3B 47 36 9A 62 8F D3 62 E8
0110 | FF 1F 08 F5 75 61 A5 4A E2 D0 53 92 16 98 53 65
0120 | 62 6F 26 19 29 0C CB 4A 90 A8 80 55 E5 A1 34 50
0130 | 34 0C FD 52 8E 7E 80 FA 03 DE FC 26 4B 49 4E 74
0140 | BB 83 C5 F0 F3 50 1F 72 B4 F1 E1 BE 5D 82 B9 B6
0150 | 80 7E F7 EF 60 35 ED 7E CD 6F 82 6F 42 B6 BF 9D
0160 | B1 4A 37 FF 5B 4B 94 27 11 C1 E6 95 9B 05 27 FE
0170 | F8 6C 70 8F 41 6D C0 D2 D1 35 41 7F 05 26 D9 5B
0180 | 48 72 36 46 15 8B AE 0D B4 5C 2C 80</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 34 08 0F 00 D9 BA 70 65
0010 | 78 01 00 00 1F 5F 04 F5 8C 08 57 AA 2E 27 2A 56
0020 | 04 13 E8 05 64 5D EF 49 B5 9D 25 38 AE 48 79 78
0030 | F7 F4 B2 24 D3 82 08 D2 FE 50 01 00 E3 14 D2 13
0040 | DB 6C 3A B5 68 6B 84 B8 71 A8 1F 4B 0A 47 03 3B
0050 | 19 7C 1D 9F C1 EE D3 00 45 28 2D 6B A1 C3 65 42
0060 | DD 9B 85 68 CE 73 46 66 CC 86 63 46 FD 70 48 E5
0070 | 92 39 D6 EC 4E 58 86 D9 BE C7 D4 3D 01 26 14 35
0080 | D4 96 4C 34 BF 27 23 22 2E 28 8F 76 11 8F B0 D2
0090 | B1 14 B1 5C 70 09 AF 6B CD 6A DF A8 C9 3F 28 7E
00A0 | 9E 7F 6C AD B3 E8 42 83 12 6E B9 DB 7A DD 02 4B
00B0 | AF 1E 00 2B C4 A3 16 52 06 A1 DA 3D 61 72 94 8B
00C0 | 9C DE 76 92 34 C1 99 75 52 8E 3F F5 19 2D 07 6B
00D0 | 8B BC CA D0 1B 8D 5C 07 2C 98 D6 48 3D 25 5B AE
00E0 | 0C D3 60 ED 66 D1 69 E4 B4 BE 4B 04 18 CB ED 8E
00F0 | 88 16 CC E7 4B E7 87 DE 30 76 A7 60 87 00 AD 34
0100 | CA 7A D3 3B 84 B7 51 80 CA 5E 46 07 DF 6B 22 FD
0110 | 91 0C DD 18 06 2F A3 81 07 A7 61 05 EA 01 0C 9D
0120 | C2 A1 D0 66 47 11 FD DB 31 20 95 F0 B8 6A 90 18
0130 | 38 AC 91 B6 C0 4B 70 A9 84 08 80 27 6D 10 B4 03
0140 | A2 63 E1 06 44 1C 20 DF 78 C1 F8 56 CA 24 6F B8
0150 | EF 76 21 BD 26 04 C2 53 3B 1E 72 73 75 D2 E8 7F
0160 | 8F F0 21 29 57 A9 75 DF DE 6D F8 36 AD 45 91 18
0170 | F4 E7 CA 93 BD 8C 71 86 32 84 36 1A 0A 78 4B BB
0180 | 05 20 63 37 B4 AC 59 88 88 38 A4 85</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>84C3060062A87065</code></td>
<td><code>34080F00D9BA7065</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>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010092A899EBE18916C7454F5F53</code> <code>C75969234B53E67FF7AD43DF7D0AB62E</code> <code>32D5B68E0A62C29110C6412D06FC97B0</code> <code>131CA291B3901544131991E42DA9F639</code> <code>0EEB05F710C28E250FD83976F8076417</code> <code>3FC6C74E5AA81A7FB55249E77425887E</code> <code>72EFABF8AB3CD122FE22B1333AE95A71</code> <code>AF43BD5BE35488E6356DB2271A659C1B</code> <code>3861EDD021B2111B942B04769055ADDF</code> <code>F57AB6A6EB8917AB4DB09C0180429AAD</code> <code>386F3BD5D205CA9F0E8073E61E954576</code> <code>69E0496135AD21906C670AA3FDF9A856</code> <code>99EDAD9762C773F0BE3821B004D9BA3B</code> <code>47369A628FD362E8FF1F08F57561A54A</code> <code>E2D0539216985365626F2619290CCB4A</code> <code>90A88055E5A13450340CFD528E7E80FA</code> <code>03DEFC264B494E74BB83C5F0F3501F72</code> <code>B4F1E1BE5D82B9B6807EF7EF6035ED7E</code> <code>CD6F826F42B6BF9DB14A37FF5B4B9427</code> <code>11C1E6959B0527FEF86C708F416DC0D2</code> <code>D135417F0526D95B48723646158BAE0D</code><br> <code>B45C2C80</code></td>
<td><code>FE500100E314D213DB6C3AB5686B84B8</code> <code>71A81F4B0A47033B197C1D9FC1EED300</code> <code>45282D6BA1C36542DD9B8568CE734666</code> <code>CC866346FD7048E59239D6EC4E5886D9</code> <code>BEC7D43D01261435D4964C34BF272322</code> <code>2E288F76118FB0D2B114B15C7009AF6B</code> <code>CD6ADFA8C93F287E9E7F6CADB3E84283</code> <code>126EB9DB7ADD024BAF1E002BC4A31652</code> <code>06A1DA3D6172948B9CDE769234C19975</code> <code>528E3FF5192D076B8BBCCAD01B8D5C07</code> <code>2C98D6483D255BAE0CD360ED66D169E4</code> <code>B4BE4B0418CBED8E8816CCE74BE787DE</code> <code>3076A7608700AD34CA7AD33B84B75180</code> <code>CA5E4607DF6B22FD910CDD18062FA381</code> <code>07A76105EA010C9DC2A1D0664711FDDB</code> <code>312095F0B86A901838AC91B6C04B70A9</code> <code>840880276D10B403A263E106441C20DF</code> <code>78C1F856CA246FB8EF7621BD2604C253</code> <code>3B1E727375D2E87F8FF0212957A975DF</code> <code>DE6DF836AD459118F4E7CA93BD8C7186</code> <code>3284361A0A784BBB05206337B4AC5988</code><br> <code>8838A485</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 = 550F6647E883F8FF80BE3F6A248487051C5F9AB8B106A45A26BD99EA740CBB7EEF34BA00A9206DFE74C79AFADB9990BF560E4BE79CC2FE46F7B0F1134DAE587D83C789A489A3B322D25EFF6E9EE0719742BE89E7673C7D09DDE9B0C25413D8221B75AC3BE377B1BD9463358EDA2BA9619EAFA1B7929731486276720C84A798CCA14C4979AB733D35E4D891DB4B1CFF95C2E45767AD151D7ED1E2A860B40FD2F0CD7F265AE5BE602676DA05FF5C2738ACDC778C9EF8AB885367408653E7184E7F76CBEB1E7BD518B31BD8F27A394FC2223DB692210944B373E7695EAACBF35BA1646B57153FF63C91CB5D884B6B2B22134C299161544CB78E69221EC82899AC1F</code></pre>
<pre><code>auth_key = 28CE00BA00B8208DACFC41AE516D18623B91B8328BD604A7A693574D488EFEF342847733B99CDCAB4F2370EE9EDB14032E2EE2D8620A8C42337D8F285E922EDD26FA091737827CAB1CAF2B74D7BA6E0DD917998E7BFE5F0BF288378B78A146ADB177AD59A193E70CF8FED7E27DFD800B80953288B7AD090C1A64E8890F23CE0A8350A8EE4BE5086B3F618F82B50E221BD58F4AABFF36F1BFBC20689DD18B627AD216A474DFAAE639DBD09F822AB19CD681FE28D98276C0E0CA6307EA2BADB5F072F463B23E94921F017DD92BA894431AA37FCDB5EB01726081AEE18F08DF2CEBEE2261F96229AE97F671F6A27E9CA81DEAFB0CA8FF9A7038B98EEBAD83DB6A15</code></pre>
<!-- end auth_key -->
<h5><a class="anchor" href="#9-final-server-reply" id="9-final-server-reply" name="9-final-server-reply"><i class="anchor-icon"></i></a>9) Final server reply</h5>
<p>The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:</p>
<!-- start dh_gen_ok -->
<p>Received payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 CC AA D9 62 A8 70 65
0010 | 68 00 00 00 34 F7 CB 3B 71 4B B1 C3 0B B2 D2 9E
0020 | 0D A3 4A 1E D3 72 C3 D6 6D 43 E5 FE 7F 4B 90 E8
0030 | 0C 49 C1 D2 AF FE FB CC BE 11 44 D4 2D 67 33 B4
0040 | 98 85 D5 77 71 7C 4D 35</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 BC 13 D1 DA BA 70 65
0010 | 38 00 00 00 34 F7 CB 3B 8C 08 57 AA 2E 27 2A 56
0020 | 04 13 E8 05 64 5D EF 49 B5 9D 25 38 AE 48 79 78
0030 | F7 F4 B2 24 D3 82 08 D2 44 B9 74 84 35 A0 EF 63
0040 | 5F 86 0E 16 F5 B6 FC F8</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>01CCAAD962A87065</code></td>
<td><code>01BC13D1DABA7065</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>68000000</code> (104 in decimal)</td>
<td><code>38000000</code> (56 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>714BB1C30BB2D29E0DA34A1ED372C3D6</code></td>
<td><code>8C0857AA2E272A560413E805645DEF49</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>6D43E5FE7F4B90E80C49C1D2AFFEFBCC</code></td>
<td><code>B59D2538AE487978F7F4B224D38208D2</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>BE1144D42D6733B49885D577717C4D35</code></td>
<td><code>44B9748435A0EF635F860E16F5B6FCF8</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

@ -92,7 +92,7 @@
</tr>
<tr>
<td><a href="/constructor/inputTakeoutFileLocation">inputTakeoutFileLocation</a></td>
<td>Empty constructor for takeout</td>
<td>Used to download a JSON file that will contain all personal data related to features that do not have a specialized <a href="/api/takeout">takeout method</a> yet, see <a href="/api/takeout">here »</a> for more info on the takeout API.</td>
</tr>
<tr>
<td><a href="/constructor/inputPhotoFileLocation">inputPhotoFileLocation</a></td>