|
|
|
@ -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 BC 76 09 00 AF 4D 99 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE A6 B2 F8 1F 8F DB 3D 17
|
|
|
|
|
0020 | 33 82 A6 28 5E 43 3C 5E</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 54 FF 09 00 79 5A 99 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 66 1D B0 4F 07 59 BA 01
|
|
|
|
|
0020 | 12 AF 0F 39 23 A2 49 6C</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>BC760900AF4D9966</code></td>
|
|
|
|
|
<td><code>54FF0900795A9966</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -95,7 +95,7 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -104,11 +104,11 @@
|
|
|
|
|
<h5><a class="anchor" href="#2-server-sends-response-of-the-form" id="2-server-sends-response-of-the-form" name="2-server-sends-response-of-the-form"><i class="anchor-icon"></i></a>2) Server sends response of the form</h5>
|
|
|
|
|
<!-- start resPQ -->
|
|
|
|
|
<p>Received payload (excluding transport headers/trailers):</p>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 48 04 FE AF 4D 99 66
|
|
|
|
|
0010 | 7C 00 00 00 63 24 16 05 A6 B2 F8 1F 8F DB 3D 17
|
|
|
|
|
0020 | 33 82 A6 28 5E 43 3C 5E 57 23 72 FC D6 8B D9 7F
|
|
|
|
|
0030 | 39 4B A8 98 AB 19 56 DE 08 19 69 25 89 F3 72 50
|
|
|
|
|
0040 | 2F 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 D8 D9 E7 79 5A 99 66
|
|
|
|
|
0010 | 9C 00 00 00 63 24 16 05 66 1D B0 4F 07 59 BA 01
|
|
|
|
|
0020 | 12 AF 0F 39 23 A2 49 6C 48 E1 4C F6 49 34 95 00
|
|
|
|
|
0030 | BF 9F 7D B9 A9 72 79 46 08 19 21 50 1D 5D 3E A3
|
|
|
|
|
0040 | CF 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>014804FEAF4D9966</code></td>
|
|
|
|
|
<td><code>01D8D9E7795A9966</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>7C000000</code> (124 in decimal)</td>
|
|
|
|
|
<td><code>9C000000</code> (156 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>0819692589F372502F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1831035997927919663</td>
|
|
|
|
|
<td><code>081921501D5D3EA3CF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1810816612228309967</td>
|
|
|
|
|
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -208,22 +208,22 @@
|
|
|
|
|
<h4><a class="anchor" href="#proof-of-work" id="proof-of-work" name="proof-of-work"><i class="anchor-icon"></i></a>Proof of work</h4>
|
|
|
|
|
<h5><a class="anchor" href="#3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" id="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" name="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p < q.</h5>
|
|
|
|
|
<!-- start pq -->
|
|
|
|
|
<pre><code>pq = 1831035997927919663</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1831035997927919663 = 1065167549 * 1719012187</code></p>
|
|
|
|
|
<pre><code>p = 1065167549
|
|
|
|
|
q = 1719012187</code></pre>
|
|
|
|
|
<pre><code>pq = 1810816612228309967</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1810816612228309967 = 1033917223 * 1751413529</code></p>
|
|
|
|
|
<pre><code>p = 1033917223
|
|
|
|
|
q = 1751413529</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 19 69 25 89 F3 72 50 2F 00 00 00
|
|
|
|
|
0010 | 04 3F 7D 2A BD 00 00 00 04 66 76 0B 5B 00 00 00
|
|
|
|
|
0020 | A6 B2 F8 1F 8F DB 3D 17 33 82 A6 28 5E 43 3C 5E
|
|
|
|
|
0030 | 57 23 72 FC D6 8B D9 7F 39 4B A8 98 AB 19 56 DE
|
|
|
|
|
0040 | 45 66 5B FB DA BB 71 20 49 33 58 6A D5 1B 7D 65
|
|
|
|
|
0050 | 96 CD AA 76 99 E2 2A 3E A8 0A F2 EF 1C 6D 78 EF
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 19 21 50 1D 5D 3E A3 CF 00 00 00
|
|
|
|
|
0010 | 04 3D A0 53 27 00 00 00 04 68 64 73 19 00 00 00
|
|
|
|
|
0020 | 66 1D B0 4F 07 59 BA 01 12 AF 0F 39 23 A2 49 6C
|
|
|
|
|
0030 | 48 E1 4C F6 49 34 95 00 BF 9F 7D B9 A9 72 79 46
|
|
|
|
|
0040 | 3E 94 B4 C7 15 50 62 E6 79 67 69 11 C8 FC BD BC
|
|
|
|
|
0050 | 95 A7 51 29 76 08 24 0F 37 85 4B D2 EE 49 FA 54
|
|
|
|
|
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 = 1719012187</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>0819692589F372502F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1831035997927919663</td>
|
|
|
|
|
<td><code>081921501D5D3EA3CF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1810816612228309967</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>043F7D2ABD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1065167549</td>
|
|
|
|
|
<td><code>043DA05327000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1033917223</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>0466760B5B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1719012187</td>
|
|
|
|
|
<td><code>0468647319000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1751413529</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>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>45665BFBDABB71204933586AD51B7D65</code> <code>96CDAA7699E22A3EA80AF2EF1C6D78EF</code></td>
|
|
|
|
|
<td><code>3E94B4C7155062E679676911C8FCBDBC</code> <code>95A751297608240F37854BD2EE49FA54</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1719012187</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 = 955FF5A90819692589F372502F000000043F7D2ABD0000000466760B5B000000A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956DE45665BFBDABB71204933586AD51B7D6596CDAA7699E22A3EA80AF2EF1C6D78EF02000000
|
|
|
|
|
random_padding_bytes = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EAC03D1A0FAEDA729CB0F870B97FDFBFD93A090CE4AE044850CDB1A7EB4393018354D8AC3D7312F9E5363DD6FD8EB762AD1E717D830F11C1031CB2571084EB371</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A9081921501D5D3EA3CF000000043DA053270000000468647319000000661DB04F0759BA0112AF0F3923A2496C48E14CF649349500BF9F7DB9A97279463E94B4C7155062E679676911C8FCBDBC95A751297608240F37854BD2EE49FA5402000000
|
|
|
|
|
random_padding_bytes = 31BFA2AA3B357FDD3EF1EA929237378B200028E8B0FDC23E2EF673A3094EC21A83792D7FF69B33BFBEAB21F45027437CF1F0E78FF5497A14237020FD926EA26A242F5EF3F0C9040D56D188093366EFB6EDDB66D14B649F6F37C98BD2</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 = 60D52FF3615070E9CB98A925B8FBE3D88F56022CD55253064B6D1F579B4CF6BF0A9A55CED20CB1AC6D91C801FF3C8AE5F88B164A7F98BB6AA5B0764D4B4F21B1031271490CEC627D3F8B171AC078090E4F8545A48557E6A2DB4A7F1937B9197DEE3B53C4494B23183DDE61C0FF9B5757A96F9916E89DE30279E815877C11EF8B659B0E531DA5306695C78B8ABA9EF329D8F12CEB810CC338C287D2DE70347401225BB8A042376B4662A2A103D5C7ED317B2A49FBF3409F10A8DD8988EA128D40637BC66102D0965EA5532FBCFE5DBF022A4889605CF7D4A45D62D0CE5C2471DFABED92DD4DC3FAFB6E6DFFFF41FB7B58129A27F9C09292DED23E1BE058DDBC0D</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 9410F5D93A9A4109250C5365EDA96FB3D5D5300941DE02D63C5C2F17FF90A38A8A77B9E0A39AFBDA45112C814007A8F5B4EB950F6745CC9797542C7B619DC6CE2E81CB19A2C63ED565C54BDAABE1E22584AFA3E1FFB50B625A756A64AD00F11511C41C70A1F27E9E3CFCE86581FBCBE32DAB4A756383234BAA3DD2C5B76D68E58E2997D60D9099722D866784AFD2788F1362B7A77B60929F6AF7264121C688EFC2045E1AAA158A29C376236B6F1CB97812BAA14C354DC03C567E566A221E598FC1FADA42AE3239E6E572EDACCD2EADD99B39C573DD015BF5872B1EC41E4C9DB12230AD5CF0B5B1EB9D92AD832B1CD58A43B46CB9A0B88475A86276C7E5FFD1B3</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 20 C0 03 00 B0 4D 99 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 A6 B2 F8 1F 8F DB 3D 17
|
|
|
|
|
0020 | 33 82 A6 28 5E 43 3C 5E 57 23 72 FC D6 8B D9 7F
|
|
|
|
|
0030 | 39 4B A8 98 AB 19 56 DE 04 3F 7D 2A BD 00 00 00
|
|
|
|
|
0040 | 04 66 76 0B 5B 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 60 D5 2F F3 61 50 70 E9 CB 98 A9 25
|
|
|
|
|
0060 | B8 FB E3 D8 8F 56 02 2C D5 52 53 06 4B 6D 1F 57
|
|
|
|
|
0070 | 9B 4C F6 BF 0A 9A 55 CE D2 0C B1 AC 6D 91 C8 01
|
|
|
|
|
0080 | FF 3C 8A E5 F8 8B 16 4A 7F 98 BB 6A A5 B0 76 4D
|
|
|
|
|
0090 | 4B 4F 21 B1 03 12 71 49 0C EC 62 7D 3F 8B 17 1A
|
|
|
|
|
00A0 | C0 78 09 0E 4F 85 45 A4 85 57 E6 A2 DB 4A 7F 19
|
|
|
|
|
00B0 | 37 B9 19 7D EE 3B 53 C4 49 4B 23 18 3D DE 61 C0
|
|
|
|
|
00C0 | FF 9B 57 57 A9 6F 99 16 E8 9D E3 02 79 E8 15 87
|
|
|
|
|
00D0 | 7C 11 EF 8B 65 9B 0E 53 1D A5 30 66 95 C7 8B 8A
|
|
|
|
|
00E0 | BA 9E F3 29 D8 F1 2C EB 81 0C C3 38 C2 87 D2 DE
|
|
|
|
|
00F0 | 70 34 74 01 22 5B B8 A0 42 37 6B 46 62 A2 A1 03
|
|
|
|
|
0100 | D5 C7 ED 31 7B 2A 49 FB F3 40 9F 10 A8 DD 89 88
|
|
|
|
|
0110 | EA 12 8D 40 63 7B C6 61 02 D0 96 5E A5 53 2F BC
|
|
|
|
|
0120 | FE 5D BF 02 2A 48 89 60 5C F7 D4 A4 5D 62 D0 CE
|
|
|
|
|
0130 | 5C 24 71 DF AB ED 92 DD 4D C3 FA FB 6E 6D FF FF
|
|
|
|
|
0140 | 41 FB 7B 58 12 9A 27 F9 C0 92 92 DE D2 3E 1B E0
|
|
|
|
|
0150 | 58 DD BC 0D</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 E6 03 00 7A 5A 99 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 66 1D B0 4F 07 59 BA 01
|
|
|
|
|
0020 | 12 AF 0F 39 23 A2 49 6C 48 E1 4C F6 49 34 95 00
|
|
|
|
|
0030 | BF 9F 7D B9 A9 72 79 46 04 3D A0 53 27 00 00 00
|
|
|
|
|
0040 | 04 68 64 73 19 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 94 10 F5 D9 3A 9A 41 09 25 0C 53 65
|
|
|
|
|
0060 | ED A9 6F B3 D5 D5 30 09 41 DE 02 D6 3C 5C 2F 17
|
|
|
|
|
0070 | FF 90 A3 8A 8A 77 B9 E0 A3 9A FB DA 45 11 2C 81
|
|
|
|
|
0080 | 40 07 A8 F5 B4 EB 95 0F 67 45 CC 97 97 54 2C 7B
|
|
|
|
|
0090 | 61 9D C6 CE 2E 81 CB 19 A2 C6 3E D5 65 C5 4B DA
|
|
|
|
|
00A0 | AB E1 E2 25 84 AF A3 E1 FF B5 0B 62 5A 75 6A 64
|
|
|
|
|
00B0 | AD 00 F1 15 11 C4 1C 70 A1 F2 7E 9E 3C FC E8 65
|
|
|
|
|
00C0 | 81 FB CB E3 2D AB 4A 75 63 83 23 4B AA 3D D2 C5
|
|
|
|
|
00D0 | B7 6D 68 E5 8E 29 97 D6 0D 90 99 72 2D 86 67 84
|
|
|
|
|
00E0 | AF D2 78 8F 13 62 B7 A7 7B 60 92 9F 6A F7 26 41
|
|
|
|
|
00F0 | 21 C6 88 EF C2 04 5E 1A AA 15 8A 29 C3 76 23 6B
|
|
|
|
|
0100 | 6F 1C B9 78 12 BA A1 4C 35 4D C0 3C 56 7E 56 6A
|
|
|
|
|
0110 | 22 1E 59 8F C1 FA DA 42 AE 32 39 E6 E5 72 ED AC
|
|
|
|
|
0120 | CD 2E AD D9 9B 39 C5 73 DD 01 5B F5 87 2B 1E C4
|
|
|
|
|
0130 | 1E 4C 9D B1 22 30 AD 5C F0 B5 B1 EB 9D 92 AD 83
|
|
|
|
|
0140 | 2B 1C D5 8A 43 B4 6C B9 A0 B8 84 75 A8 62 76 C7
|
|
|
|
|
0150 | E5 FF D1 B3</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 = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>20C00300B04D9966</code></td>
|
|
|
|
|
<td><code>04E603007A5A9966</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -363,25 +363,25 @@ random_padding_bytes = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>043F7D2ABD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1065167549</td>
|
|
|
|
|
<td><code>043DA05327000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1033917223</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>0466760B5B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1719012187</td>
|
|
|
|
|
<td><code>0468647319000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1751413529</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 = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE00010060D52FF3615070E9CB98A925</code> <code>B8FBE3D88F56022CD55253064B6D1F57</code> <code>9B4CF6BF0A9A55CED20CB1AC6D91C801</code> <code>FF3C8AE5F88B164A7F98BB6AA5B0764D</code> <code>4B4F21B1031271490CEC627D3F8B171A</code> <code>C078090E4F8545A48557E6A2DB4A7F19</code> <code>37B9197DEE3B53C4494B23183DDE61C0</code> <code>FF9B5757A96F9916E89DE30279E81587</code> <code>7C11EF8B659B0E531DA5306695C78B8A</code> <code>BA9EF329D8F12CEB810CC338C287D2DE</code> <code>70347401225BB8A042376B4662A2A103</code> <code>D5C7ED317B2A49FBF3409F10A8DD8988</code> <code>EA128D40637BC66102D0965EA5532FBC</code> <code>FE5DBF022A4889605CF7D4A45D62D0CE</code> <code>5C2471DFABED92DD4DC3FAFB6E6DFFFF</code> <code>41FB7B58129A27F9C09292DED23E1BE0</code><br> <code>58DDBC0D</code></td>
|
|
|
|
|
<td><code>FE0001009410F5D93A9A4109250C5365</code> <code>EDA96FB3D5D5300941DE02D63C5C2F17</code> <code>FF90A38A8A77B9E0A39AFBDA45112C81</code> <code>4007A8F5B4EB950F6745CC9797542C7B</code> <code>619DC6CE2E81CB19A2C63ED565C54BDA</code> <code>ABE1E22584AFA3E1FFB50B625A756A64</code> <code>AD00F11511C41C70A1F27E9E3CFCE865</code> <code>81FBCBE32DAB4A756383234BAA3DD2C5</code> <code>B76D68E58E2997D60D9099722D866784</code> <code>AFD2788F1362B7A77B60929F6AF72641</code> <code>21C688EFC2045E1AAA158A29C376236B</code> <code>6F1CB97812BAA14C354DC03C567E566A</code> <code>221E598FC1FADA42AE3239E6E572EDAC</code> <code>CD2EADD99B39C573DD015BF5872B1EC4</code> <code>1E4C9DB12230AD5CF0B5B1EB9D92AD83</code> <code>2B1CD58A43B46CB9A0B88475A86276C7</code><br> <code>E5FFD1B3</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EA
|
|
|
|
|
<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 90 B0 B1 B0 4D 99 66
|
|
|
|
|
0010 | DC 02 00 00 5C 07 E8 D0 A6 B2 F8 1F 8F DB 3D 17
|
|
|
|
|
0020 | 33 82 A6 28 5E 43 3C 5E 57 23 72 FC D6 8B D9 7F
|
|
|
|
|
0030 | 39 4B A8 98 AB 19 56 DE FE 50 02 00 C1 3C 7E AA
|
|
|
|
|
0040 | 1A DB 0C C9 0D B1 B7 FF 76 43 6C D2 2D 3B 28 95
|
|
|
|
|
0050 | 1D EF A9 08 3D 1F 52 3B 83 DB C2 A5 F3 38 CA B8
|
|
|
|
|
0060 | 75 44 B2 30 9E 17 29 AD F7 DF A8 5A 5B 68 95 C1
|
|
|
|
|
0070 | 03 81 B1 0F 86 4D 31 84 9A 17 23 D9 49 68 CE D0
|
|
|
|
|
0080 | E1 8F E0 57 FA 92 1A 10 F4 7C 6D 11 22 A8 E6 53
|
|
|
|
|
0090 | A2 CB 68 7D 0B 47 BB A2 BF 65 DC 11 9D 17 22 EE
|
|
|
|
|
00A0 | 8D AB A9 89 B8 ED 02 45 3D D4 E8 59 33 DD 8C 87
|
|
|
|
|
00B0 | 99 FE B8 BF 0A 95 2D C9 29 85 D7 D9 B3 1E 7F 75
|
|
|
|
|
00C0 | 7A D6 13 FB 48 CF 5F 3E 29 65 57 5D D9 42 2D D0
|
|
|
|
|
00D0 | 43 94 87 8B 07 5A CA D3 1B 39 AF 12 C4 04 4D 49
|
|
|
|
|
00E0 | 67 90 1F 71 0D DA 37 09 AC E3 71 42 75 9F 97 9B
|
|
|
|
|
00F0 | AC 10 F2 90 C6 6B 9E 9C D0 65 10 22 8A 40 4A AD
|
|
|
|
|
0100 | 47 00 EA 0A AC C8 DA D1 0A 81 85 64 B9 79 5D 8D
|
|
|
|
|
0110 | E7 0E B1 EE CC 2F 58 23 65 FA 4E DE ED AE 3C DB
|
|
|
|
|
0120 | CF AC F3 EE AC A6 30 54 D9 0E C1 5B 8C 54 A8 CF
|
|
|
|
|
0130 | C9 4F 4D C9 67 BC 6A 11 92 BA 89 70 0B 45 BA CD
|
|
|
|
|
0140 | BA 60 32 B1 9E 7E AC B6 6E 01 AD D5 8F 17 0B 9D
|
|
|
|
|
0150 | F7 33 EC FF 4C 27 35 95 DA 18 1D A8 5B 44 9A 5B
|
|
|
|
|
0160 | 89 7E E4 65 21 F4 CD 51 B1 DD 96 53 FA 95 02 0A
|
|
|
|
|
0170 | 54 CC 9E EC DB A2 DE 7B 5C 69 58 40 27 93 37 24
|
|
|
|
|
0180 | 82 84 01 D5 B1 7F CB B2 2E B8 60 D6 C4 45 E6 F7
|
|
|
|
|
0190 | 86 A0 BE 04 01 60 78 2A 63 9A F3 4B C4 EC 0E E4
|
|
|
|
|
01A0 | A3 85 96 C6 F2 F8 E9 8F 44 39 01 CB F8 A3 B9 0C
|
|
|
|
|
01B0 | C6 13 3A 7D 7C D1 8B FA D2 D0 DC FE C4 85 D3 A0
|
|
|
|
|
01C0 | 2B 60 52 F5 91 B0 3F B6 99 E2 16 9E B8 D7 4A 7C
|
|
|
|
|
01D0 | 98 A9 A7 02 13 DD 45 C3 FB 5C 81 0A F7 A9 2C 81
|
|
|
|
|
01E0 | 5C A5 0B 58 48 F5 C8 8C D7 4F 87 87 6B 7E 60 11
|
|
|
|
|
01F0 | B5 4B 92 BE 8A 24 E8 CD 7F FA EC ED 79 1A D8 4A
|
|
|
|
|
0200 | 47 25 B6 2A DA 02 FA 0D F2 33 35 68 C8 E2 CC 0A
|
|
|
|
|
0210 | 9E E5 1A 8A 81 EA 70 EE C9 94 F2 76 75 14 15 1F
|
|
|
|
|
0220 | 14 69 9D 19 D9 53 F8 FA 8F 80 77 CF 06 C5 8B 47
|
|
|
|
|
0230 | CF FA DE 83 A1 81 4E 38 3E C3 F6 63 24 14 C4 BD
|
|
|
|
|
0240 | 1D D7 A7 0A 26 A1 95 C9 63 2C 13 58 A2 77 59 AF
|
|
|
|
|
0250 | 88 DA 06 5B 5D 95 60 3B EC DD F7 18 D9 12 B7 A7
|
|
|
|
|
0260 | 0C B9 11 2A 1C F9 37 31 91 A9 06 A5 6C 8F 98 4C
|
|
|
|
|
0270 | 9F 4D 71 8A 4D 9C 62 42 40 05 B6 B7 4F 87 80 B0
|
|
|
|
|
0280 | 99 91 AC 83 0E F5 80 B8 19 77 54 79</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B4 4B B0 7A 5A 99 66
|
|
|
|
|
0010 | A0 02 00 00 5C 07 E8 D0 66 1D B0 4F 07 59 BA 01
|
|
|
|
|
0020 | 12 AF 0F 39 23 A2 49 6C 48 E1 4C F6 49 34 95 00
|
|
|
|
|
0030 | BF 9F 7D B9 A9 72 79 46 FE 50 02 00 69 69 7F CB
|
|
|
|
|
0040 | CC F9 EB 24 42 5B 5B 30 76 04 D9 6A A6 49 F1 92
|
|
|
|
|
0050 | C6 1A B1 DB 31 31 3D 71 E4 A4 C5 BC 86 A4 FC 06
|
|
|
|
|
0060 | 84 5E A4 BF 7D F4 58 B5 B5 2B BF 5F 1B 3D 4F 21
|
|
|
|
|
0070 | 25 41 01 F6 62 20 D3 4B 40 15 36 EF 73 E9 10 FB
|
|
|
|
|
0080 | 2A D4 50 EE 2A B1 93 98 24 60 8E C6 3E 4F 28 A1
|
|
|
|
|
0090 | 7C BD CD CA AE F3 56 7B DF 42 AB 18 5E 99 9D 04
|
|
|
|
|
00A0 | 85 FC 58 5E 9F CA BB 5E B0 B5 BB CB F0 2F E2 D1
|
|
|
|
|
00B0 | D2 E3 9E 7B 81 9A E0 C6 3E B2 2A 96 67 B7 4E B5
|
|
|
|
|
00C0 | 5E BB 53 A6 9D 62 AB 13 C6 53 39 CA 0D 97 38 92
|
|
|
|
|
00D0 | 8D D6 73 31 2B E3 63 2B 54 2D 81 DB 45 6D BB 2C
|
|
|
|
|
00E0 | 3D 9C 51 6B E0 27 0C A0 00 52 42 C2 67 2D 71 FC
|
|
|
|
|
00F0 | 6F C0 00 67 9C 3E 9D 4B 00 C7 12 23 F5 FA 27 97
|
|
|
|
|
0100 | E2 D4 2A FE 73 95 EB 21 2B AA 8B 4F 2F 72 B1 74
|
|
|
|
|
0110 | 73 94 0B 06 69 AF 93 26 4B 5D 84 D5 C6 FD 92 82
|
|
|
|
|
0120 | 5B 7C 2D A6 5B 13 D8 91 1C E3 4A 2D BD 0B 97 74
|
|
|
|
|
0130 | 50 A9 35 A5 5A D6 A9 40 11 8A EF 5B A2 87 2C 0C
|
|
|
|
|
0140 | 70 33 FA CC 9B 53 AC 27 D7 F5 4B 8C 2F FD 43 F9
|
|
|
|
|
0150 | DF 45 D2 4C A7 10 70 77 3E A0 91 EB 8A A6 99 01
|
|
|
|
|
0160 | 19 94 C7 29 69 F1 10 0F 3C 49 5E 91 B6 67 5C 2B
|
|
|
|
|
0170 | 08 0D 6F 05 1C 3E 11 60 77 A1 00 57 53 47 5D 8C
|
|
|
|
|
0180 | EC B7 E8 3B 9C 7B BD 23 2F 14 7D 55 A1 33 6B 65
|
|
|
|
|
0190 | 45 CF 9A 0D FF 6C F7 00 B7 65 67 6B 75 D9 EF 53
|
|
|
|
|
01A0 | 5B 98 39 49 52 1F 76 3E 8D DD FC 29 EC ED D0 A9
|
|
|
|
|
01B0 | 65 DC B3 A7 11 A4 95 CA 88 22 9F 51 3B 70 F2 DF
|
|
|
|
|
01C0 | 36 55 D6 6F 39 1F F6 95 09 B1 D7 78 7B 21 36 BB
|
|
|
|
|
01D0 | C8 84 46 50 09 DA 7D B2 62 EB E4 9F C3 8E 16 75
|
|
|
|
|
01E0 | CF EF 0E A6 15 18 ED 42 9A 99 D7 7A B0 00 F7 42
|
|
|
|
|
01F0 | AA 53 E3 78 2F 03 DC FF 15 19 02 B1 A8 75 05 1C
|
|
|
|
|
0200 | 2C 90 12 7D 57 78 8D 96 35 53 1C A3 11 54 C9 8D
|
|
|
|
|
0210 | 84 02 E0 26 05 5C 68 14 6B F7 E1 61 E0 A8 47 EB
|
|
|
|
|
0220 | 87 5C 3E 90 43 90 0C 1B 50 44 9E 57 07 2F 31 B9
|
|
|
|
|
0230 | 63 69 22 6A BA 5C 04 B7 E2 19 EC 2B D5 7D E7 4C
|
|
|
|
|
0240 | B5 49 41 E8 D7 B4 3F 28 49 03 FF 8A 79 35 71 08
|
|
|
|
|
0250 | D6 BF B4 99 71 CF 77 B7 DF CF D8 4D E7 6E DF 37
|
|
|
|
|
0260 | 11 AF C2 7E CB EF ED E2 E6 22 A9 C6 64 57 4F 80
|
|
|
|
|
0270 | 37 BD A9 D1 C4 8A 26 76 D8 FD 3B 64 A7 0D 99 EE
|
|
|
|
|
0280 | 2F 42 17 54 B3 B1 56 44 6B F3 E5 5B</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 = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>0190B0B1B04D9966</code></td>
|
|
|
|
|
<td><code>01B44BB07A5A9966</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>DC020000</code> (732 in decimal)</td>
|
|
|
|
|
<td><code>A0020000</code> (672 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200C13C7EAA1ADB0CC90DB1B7FF</code> <code>76436CD22D3B28951DEFA9083D1F523B</code> <code>83DBC2A5F338CAB87544B2309E1729AD</code> <code>F7DFA85A5B6895C10381B10F864D3184</code> <code>9A1723D94968CED0E18FE057FA921A10</code> <code>F47C6D1122A8E653A2CB687D0B47BBA2</code> <code>BF65DC119D1722EE8DABA989B8ED0245</code> <code>3DD4E85933DD8C8799FEB8BF0A952DC9</code> <code>2985D7D9B31E7F757AD613FB48CF5F3E</code> <code>2965575DD9422DD04394878B075ACAD3</code> <code>1B39AF12C4044D4967901F710DDA3709</code> <code>ACE37142759F979BAC10F290C66B9E9C</code> <code>D06510228A404AAD4700EA0AACC8DAD1</code> <code>0A818564B9795D8DE70EB1EECC2F5823</code> <code>65FA4EDEEDAE3CDBCFACF3EEACA63054</code> <code>D90EC15B8C54A8CFC94F4DC967BC6A11</code> <code>92BA89700B45BACDBA6032B19E7EACB6</code> <code>6E01ADD58F170B9DF733ECFF4C273595</code> <code>DA181DA85B449A5B897EE46521F4CD51</code> <code>B1DD9653FA95020A54CC9EECDBA2DE7B</code> <code>5C69584027933724828401D5B17FCBB2</code> <code>2EB860D6C445E6F786A0BE040160782A</code> <code>639AF34BC4EC0EE4A38596C6F2F8E98F</code> <code>443901CBF8A3B90CC6133A7D7CD18BFA</code> <code>D2D0DCFEC485D3A02B6052F591B03FB6</code> <code>99E2169EB8D74A7C98A9A70213DD45C3</code> <code>FB5C810AF7A92C815CA50B5848F5C88C</code> <code>D74F87876B7E6011B54B92BE8A24E8CD</code> <code>7FFAECED791AD84A4725B62ADA02FA0D</code> <code>F2333568C8E2CC0A9EE51A8A81EA70EE</code> <code>C994F2767514151F14699D19D953F8FA</code> <code>8F8077CF06C58B47CFFADE83A1814E38</code> <code>3EC3F6632414C4BD1DD7A70A26A195C9</code> <code>632C1358A27759AF88DA065B5D95603B</code> <code>ECDDF718D912B7A70CB9112A1CF93731</code> <code>91A906A56C8F984C9F4D718A4D9C6242</code> <code>4005B6B74F8780B09991AC830EF580B8</code><br> <code>19775479</code></td>
|
|
|
|
|
<td><code>FE50020069697FCBCCF9EB24425B5B30</code> <code>7604D96AA649F192C61AB1DB31313D71</code> <code>E4A4C5BC86A4FC06845EA4BF7DF458B5</code> <code>B52BBF5F1B3D4F21254101F66220D34B</code> <code>401536EF73E910FB2AD450EE2AB19398</code> <code>24608EC63E4F28A17CBDCDCAAEF3567B</code> <code>DF42AB185E999D0485FC585E9FCABB5E</code> <code>B0B5BBCBF02FE2D1D2E39E7B819AE0C6</code> <code>3EB22A9667B74EB55EBB53A69D62AB13</code> <code>C65339CA0D9738928DD673312BE3632B</code> <code>542D81DB456DBB2C3D9C516BE0270CA0</code> <code>005242C2672D71FC6FC000679C3E9D4B</code> <code>00C71223F5FA2797E2D42AFE7395EB21</code> <code>2BAA8B4F2F72B17473940B0669AF9326</code> <code>4B5D84D5C6FD92825B7C2DA65B13D891</code> <code>1CE34A2DBD0B977450A935A55AD6A940</code> <code>118AEF5BA2872C0C7033FACC9B53AC27</code> <code>D7F54B8C2FFD43F9DF45D24CA7107077</code> <code>3EA091EB8AA699011994C72969F1100F</code> <code>3C495E91B6675C2B080D6F051C3E1160</code> <code>77A1005753475D8CECB7E83B9C7BBD23</code> <code>2F147D55A1336B6545CF9A0DFF6CF700</code> <code>B765676B75D9EF535B983949521F763E</code> <code>8DDDFC29ECEDD0A965DCB3A711A495CA</code> <code>88229F513B70F2DF3655D66F391FF695</code> <code>09B1D7787B2136BBC884465009DA7DB2</code> <code>62EBE49FC38E1675CFEF0EA61518ED42</code> <code>9A99D77AB000F742AA53E3782F03DCFF</code> <code>151902B1A875051C2C90127D57788D96</code> <code>35531CA31154C98D8402E026055C6814</code> <code>6BF7E161E0A847EB875C3E9043900C1B</code> <code>50449E57072F31B96369226ABA5C04B7</code> <code>E219EC2BD57DE74CB54941E8D7B43F28</code> <code>4903FF8A79357108D6BFB49971CF77B7</code> <code>DFCFD84DE76EDF3711AFC27ECBEFEDE2</code> <code>E622A9C664574F8037BDA9D1C48A2676</code> <code>D8FD3B64A70D99EE2F421754B3B15644</code><br> <code>6BF3E55B</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 5AD52E434950F61F04ECE6113D993F76FD9B11EAC7204ACCA6A11A9EA
|
|
|
|
|
<!-- 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 = C13C7EAA1ADB0CC90DB1B7FF76436CD22D3B28951DEFA9083D1F523B83DBC2A5F338CAB87544B2309E1729ADF7DFA85A5B6895C10381B10F864D31849A1723D94968CED0E18FE057FA921A10F47C6D1122A8E653A2CB687D0B47BBA2BF65DC119D1722EE8DABA989B8ED02453DD4E85933DD8C8799FEB8BF0A952DC92985D7D9B31E7F757AD613FB48CF5F3E2965575DD9422DD04394878B075ACAD31B39AF12C4044D4967901F710DDA3709ACE37142759F979BAC10F290C66B9E9CD06510228A404AAD4700EA0AACC8DAD10A818564B9795D8DE70EB1EECC2F582365FA4EDEEDAE3CDBCFACF3EEACA63054D90EC15B8C54A8CFC94F4DC967BC6A1192BA89700B45BACDBA6032B19E7EACB66E01ADD58F170B9DF733ECFF4C273595DA181DA85B449A5B897EE46521F4CD51B1DD9653FA95020A54CC9EECDBA2DE7B5C69584027933724828401D5B17FCBB22EB860D6C445E6F786A0BE040160782A639AF34BC4EC0EE4A38596C6F2F8E98F443901CBF8A3B90CC6133A7D7CD18BFAD2D0DCFEC485D3A02B6052F591B03FB699E2169EB8D74A7C98A9A70213DD45C3FB5C810AF7A92C815CA50B5848F5C88CD74F87876B7E6011B54B92BE8A24E8CD7FFAECED791AD84A4725B62ADA02FA0DF2333568C8E2CC0A9EE51A8A81EA70EEC994F2767514151F14699D19D953F8FA8F8077CF06C58B47CFFADE83A1814E383EC3F6632414C4BD1DD7A70A26A195C9632C1358A27759AF88DA065B5D95603BECDDF718D912B7A70CB9112A1CF9373191A906A56C8F984C9F4D718A4D9C62424005B6B74F8780B09991AC830EF580B819775479
|
|
|
|
|
tmp_aes_key = D431055F7852B00BB641DE00717E3C33AD4CA820CAF6CB655007B603E0B12517
|
|
|
|
|
tmp_aes_iv = E22CBE27AAAF912C4CF8D06BA75F482EA4C255AD3EE6D08278028B8C45665BFB</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = 69697FCBCCF9EB24425B5B307604D96AA649F192C61AB1DB31313D71E4A4C5BC86A4FC06845EA4BF7DF458B5B52BBF5F1B3D4F21254101F66220D34B401536EF73E910FB2AD450EE2AB1939824608EC63E4F28A17CBDCDCAAEF3567BDF42AB185E999D0485FC585E9FCABB5EB0B5BBCBF02FE2D1D2E39E7B819AE0C63EB22A9667B74EB55EBB53A69D62AB13C65339CA0D9738928DD673312BE3632B542D81DB456DBB2C3D9C516BE0270CA0005242C2672D71FC6FC000679C3E9D4B00C71223F5FA2797E2D42AFE7395EB212BAA8B4F2F72B17473940B0669AF93264B5D84D5C6FD92825B7C2DA65B13D8911CE34A2DBD0B977450A935A55AD6A940118AEF5BA2872C0C7033FACC9B53AC27D7F54B8C2FFD43F9DF45D24CA71070773EA091EB8AA699011994C72969F1100F3C495E91B6675C2B080D6F051C3E116077A1005753475D8CECB7E83B9C7BBD232F147D55A1336B6545CF9A0DFF6CF700B765676B75D9EF535B983949521F763E8DDDFC29ECEDD0A965DCB3A711A495CA88229F513B70F2DF3655D66F391FF69509B1D7787B2136BBC884465009DA7DB262EBE49FC38E1675CFEF0EA61518ED429A99D77AB000F742AA53E3782F03DCFF151902B1A875051C2C90127D57788D9635531CA31154C98D8402E026055C68146BF7E161E0A847EB875C3E9043900C1B50449E57072F31B96369226ABA5C04B7E219EC2BD57DE74CB54941E8D7B43F284903FF8A79357108D6BFB49971CF77B7DFCFD84DE76EDF3711AFC27ECBEFEDE2E622A9C664574F8037BDA9D1C48A2676D8FD3B64A70D99EE2F421754B3B156446BF3E55B
|
|
|
|
|
tmp_aes_key = C0AE07F359E603AE019348325A3FE140E375F720C5C6D2C10AEB06CA0E4D9D57
|
|
|
|
|
tmp_aes_iv = 451C92CCB113C91BD2488002975E2504B0186EE1450111840D5906603E94B4C7</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 4E52418E166EAC51AF46B18AB0EEB6FB7740FC8CBA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956DE03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008EE2D7D2170232D3497A4264B2913BAED126F682EA5AF3E2BC90A8AF48652C29A8EB9BC37BF9F5465C8861F06BF241C7F7A9988DC07D1E33E670D2E344FA7C7F4029CFA27135FC7884D319E7580EC4B271444D7A4B12B247B984161D6A46AC973FC02FC0A0E833A261023DA11395B313D174428E891A7A174FE4CB5A694C64DDDE6FA7E520F09403513B4BB3B1CEBD6F487143307B87CAAAEFBF1436A52B9E35E3CE44056CA5DA49DC628478DF4EDA96DBA7159E004973FB1F706CE65F0AE0DCDA00A22E50516D16CD64F7DB17AEE7A0BA7FA553327C8CC1DAC881494DBD53AE610FB1ED544D039D052B725067B246F4A2352B1A918A113A04CEE7C5D16FD2F9B04D99661CA8261664812E16
|
|
|
|
|
answer = BA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956DE03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001008EE2D7D2170232D3497A4264B2913BAED126F682EA5AF3E2BC90A8AF48652C29A8EB9BC37BF9F5465C8861F06BF241C7F7A9988DC07D1E33E670D2E344FA7C7F4029CFA27135FC7884D319E7580EC4B271444D7A4B12B247B984161D6A46AC973FC02FC0A0E833A261023DA11395B313D174428E891A7A174FE4CB5A694C64DDDE6FA7E520F09403513B4BB3B1CEBD6F487143307B87CAAAEFBF1436A52B9E35E3CE44056CA5DA49DC628478DF4EDA96DBA7159E004973FB1F706CE65F0AE0DCDA00A22E50516D16CD64F7DB17AEE7A0BA7FA553327C8CC1DAC881494DBD53AE610FB1ED544D039D052B725067B246F4A2352B1A918A113A04CEE7C5D16FD2F9B04D99661CA8261664812E16</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 288147F1BCF11685D3569711433F906477CA224EBA0D89B5661DB04F0759BA0112AF0F3923A2496C48E14CF649349500BF9F7DB9A972794603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000E1D6A0D29F32896B87BE1029282AD002A22DE92A01C8DDF79911C5B2463F322B23905813FAED87A96162ABA0D7A7D8CE5F46BB5B99FB16932F2558AEE499B8B66C0C8176583139D279BEBBFF40238DC124D4380E060EDEB449D5C7C04A975EA334B26B0E5871A89F0FEC564F42CFD6159AEE5FAE5FFC9147495F69E0EBE6E70E290E73B1FEDFBA9AA91BA354A97454C999D2F43ADF058DDC87756C9CD2CE06D225AF0D362295B40126358A6BBD8B83BA7F4A8D312B81FAF0D035E93E0CEA19BCD82AEBD527EBD993D964DEE9295039968E7C22CC922B89803AB79E8F2672C3AA1F35817CB301A270E783359317F244641901CF9AEA5854D10DC5E74146D2C9C7A5A99668465683E46BBA9BA
|
|
|
|
|
answer = BA0D89B5661DB04F0759BA0112AF0F3923A2496C48E14CF649349500BF9F7DB9A972794603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000E1D6A0D29F32896B87BE1029282AD002A22DE92A01C8DDF79911C5B2463F322B23905813FAED87A96162ABA0D7A7D8CE5F46BB5B99FB16932F2558AEE499B8B66C0C8176583139D279BEBBFF40238DC124D4380E060EDEB449D5C7C04A975EA334B26B0E5871A89F0FEC564F42CFD6159AEE5FAE5FFC9147495F69E0EBE6E70E290E73B1FEDFBA9AA91BA354A97454C999D2F43ADF058DDC87756C9CD2CE06D225AF0D362295B40126358A6BBD8B83BA7F4A8D312B81FAF0D035E93E0CEA19BCD82AEBD527EBD993D964DEE9295039968E7C22CC922B89803AB79E8F2672C3AA1F35817CB301A270E783359317F244641901CF9AEA5854D10DC5E74146D2C9C7A5A99668465683E46BBA9BA</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 A6 B2 F8 1F 8F DB 3D 17 33 82 A6 28
|
|
|
|
|
0010 | 5E 43 3C 5E 57 23 72 FC D6 8B D9 7F 39 4B A8 98
|
|
|
|
|
0020 | AB 19 56 DE 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 66 1D B0 4F 07 59 BA 01 12 AF 0F 39
|
|
|
|
|
0010 | 23 A2 49 6C 48 E1 4C F6 49 34 95 00 BF 9F 7D B9
|
|
|
|
|
0020 | A9 72 79 46 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 = BA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956D
|
|
|
|
|
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 | 8E E2 D7 D2 17 02 32 D3 49 7A 42 64 B2 91 3B AE
|
|
|
|
|
0140 | D1 26 F6 82 EA 5A F3 E2 BC 90 A8 AF 48 65 2C 29
|
|
|
|
|
0150 | A8 EB 9B C3 7B F9 F5 46 5C 88 61 F0 6B F2 41 C7
|
|
|
|
|
0160 | F7 A9 98 8D C0 7D 1E 33 E6 70 D2 E3 44 FA 7C 7F
|
|
|
|
|
0170 | 40 29 CF A2 71 35 FC 78 84 D3 19 E7 58 0E C4 B2
|
|
|
|
|
0180 | 71 44 4D 7A 4B 12 B2 47 B9 84 16 1D 6A 46 AC 97
|
|
|
|
|
0190 | 3F C0 2F C0 A0 E8 33 A2 61 02 3D A1 13 95 B3 13
|
|
|
|
|
01A0 | D1 74 42 8E 89 1A 7A 17 4F E4 CB 5A 69 4C 64 DD
|
|
|
|
|
01B0 | DE 6F A7 E5 20 F0 94 03 51 3B 4B B3 B1 CE BD 6F
|
|
|
|
|
01C0 | 48 71 43 30 7B 87 CA AA EF BF 14 36 A5 2B 9E 35
|
|
|
|
|
01D0 | E3 CE 44 05 6C A5 DA 49 DC 62 84 78 DF 4E DA 96
|
|
|
|
|
01E0 | DB A7 15 9E 00 49 73 FB 1F 70 6C E6 5F 0A E0 DC
|
|
|
|
|
01F0 | DA 00 A2 2E 50 51 6D 16 CD 64 F7 DB 17 AE E7 A0
|
|
|
|
|
0200 | BA 7F A5 53 32 7C 8C C1 DA C8 81 49 4D BD 53 AE
|
|
|
|
|
0210 | 61 0F B1 ED 54 4D 03 9D 05 2B 72 50 67 B2 46 F4
|
|
|
|
|
0220 | A2 35 2B 1A 91 8A 11 3A 04 CE E7 C5 D1 6F D2 F9
|
|
|
|
|
0230 | B0 4D 99 66</code></pre>
|
|
|
|
|
0130 | 0E 1D 6A 0D 29 F3 28 96 B8 7B E1 02 92 82 AD 00
|
|
|
|
|
0140 | 2A 22 DE 92 A0 1C 8D DF 79 91 1C 5B 24 63 F3 22
|
|
|
|
|
0150 | B2 39 05 81 3F AE D8 7A 96 16 2A BA 0D 7A 7D 8C
|
|
|
|
|
0160 | E5 F4 6B B5 B9 9F B1 69 32 F2 55 8A EE 49 9B 8B
|
|
|
|
|
0170 | 66 C0 C8 17 65 83 13 9D 27 9B EB BF F4 02 38 DC
|
|
|
|
|
0180 | 12 4D 43 80 E0 60 ED EB 44 9D 5C 7C 04 A9 75 EA
|
|
|
|
|
0190 | 33 4B 26 B0 E5 87 1A 89 F0 FE C5 64 F4 2C FD 61
|
|
|
|
|
01A0 | 59 AE E5 FA E5 FF C9 14 74 95 F6 9E 0E BE 6E 70
|
|
|
|
|
01B0 | E2 90 E7 3B 1F ED FB A9 AA 91 BA 35 4A 97 45 4C
|
|
|
|
|
01C0 | 99 9D 2F 43 AD F0 58 DD C8 77 56 C9 CD 2C E0 6D
|
|
|
|
|
01D0 | 22 5A F0 D3 62 29 5B 40 12 63 58 A6 BB D8 B8 3B
|
|
|
|
|
01E0 | A7 F4 A8 D3 12 B8 1F AF 0D 03 5E 93 E0 CE A1 9B
|
|
|
|
|
01F0 | CD 82 AE BD 52 7E BD 99 3D 96 4D EE 92 95 03 99
|
|
|
|
|
0200 | 68 E7 C2 2C C9 22 B8 98 03 AB 79 E8 F2 67 2C 3A
|
|
|
|
|
0210 | A1 F3 58 17 CB 30 1A 27 0E 78 33 59 31 7F 24 46
|
|
|
|
|
0220 | 41 90 1C F9 AE A5 85 4D 10 DC 5E 74 14 6D 2C 9C
|
|
|
|
|
0230 | 7A 5A 99 66</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -570,13 +570,13 @@ answer = BA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956D
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956D
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE0001008EE2D7D2170232D3497A4264</code> <code>B2913BAED126F682EA5AF3E2BC90A8AF</code> <code>48652C29A8EB9BC37BF9F5465C8861F0</code> <code>6BF241C7F7A9988DC07D1E33E670D2E3</code> <code>44FA7C7F4029CFA27135FC7884D319E7</code> <code>580EC4B271444D7A4B12B247B984161D</code> <code>6A46AC973FC02FC0A0E833A261023DA1</code> <code>1395B313D174428E891A7A174FE4CB5A</code> <code>694C64DDDE6FA7E520F09403513B4BB3</code> <code>B1CEBD6F487143307B87CAAAEFBF1436</code> <code>A52B9E35E3CE44056CA5DA49DC628478</code> <code>DF4EDA96DBA7159E004973FB1F706CE6</code> <code>5F0AE0DCDA00A22E50516D16CD64F7DB</code> <code>17AEE7A0BA7FA553327C8CC1DAC88149</code> <code>4DBD53AE610FB1ED544D039D052B7250</code> <code>67B246F4A2352B1A918A113A04CEE7C5</code><br> <code>D16FD2F9</code></td>
|
|
|
|
|
<td><code>FE0001000E1D6A0D29F32896B87BE102</code> <code>9282AD002A22DE92A01C8DDF79911C5B</code> <code>2463F322B23905813FAED87A96162ABA</code> <code>0D7A7D8CE5F46BB5B99FB16932F2558A</code> <code>EE499B8B66C0C8176583139D279BEBBF</code> <code>F40238DC124D4380E060EDEB449D5C7C</code> <code>04A975EA334B26B0E5871A89F0FEC564</code> <code>F42CFD6159AEE5FAE5FFC9147495F69E</code> <code>0EBE6E70E290E73B1FEDFBA9AA91BA35</code> <code>4A97454C999D2F43ADF058DDC87756C9</code> <code>CD2CE06D225AF0D362295B40126358A6</code> <code>BBD8B83BA7F4A8D312B81FAF0D035E93</code> <code>E0CEA19BCD82AEBD527EBD993D964DEE</code> <code>9295039968E7C22CC922B89803AB79E8</code> <code>F2672C3AA1F35817CB301A270E783359</code> <code>317F244641901CF9AEA5854D10DC5E74</code><br> <code>146D2C9C</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>B04D9966</code> (1721322928 in decimal)</td>
|
|
|
|
|
<td><code>7A5A9966</code> (1721326202 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956D
|
|
|
|
|
<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 = 7D89404EF1BEB0A46904BDF7B07B533AC09D7D26339EDCC81DC5005EDD8D43DB31751D91BA51270266E5AFEA9B23E31E3C820D98F2C699BC60164A8B5D9E4D884CE5AEB8396029DD3753EC3EDE65C38BAFC0B8FAD22B6DFC6BFAF9F33B9B8F87E7EA993FBC32408AA96E286FB45D4394CEFE381435719E5F7128C3E55CED789641A1F7D2B3652C67EE0BFBA6F617B11AC18228AB056E87CACFD1B2ACC470A9F161677C781C1787F2950D271971CB47CC8C2FA9C86B01FFB65EA1505D7A8E95AFC48A6FE097E389AA181FF79F47C4516EF0F7DA3436B8FFBD9788B5C50602BD6FACA3AAFC35D597B40DBAD00ADF068C0E5F30C7BB39ED121CE6D32A783E1B430F</code></pre>
|
|
|
|
|
<pre><code>b = 7F05A4B15B741C1834C735E6B52AB5443DED56A3D19D706672BA26E7F73A50FC735AF8E1DA3DD8274C2C690B667C38B5E202DBE5DF792E81D2D2931C41ADECECA65DE1621485E91FA42E57D3E97D421488EACEC1EE30B23F00EB65F6A582DA051CC9CD9A842171E471BD8528147D03251E24664667CCEE3B8041DDBA989F301CAAB532654263175053D75BF90551B82F3D8FDADE12628F54B79B171E50417B5F334F66394C8A252961C69004851E49933DF6D46D82CC1DD0F9A3E0F7CEEC8219729EEB7A4BC5F333989D1C60D4498E2C73C98B640555C09A376BC94B70FFAE8EC00E131E1D598A6999386E4EAFB22A5EC1D0B9349D8C365C559669A4C559AC0E</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 = 969772FCE1BA2A936243E1150C0F3D6E9FC1FAB952F817F729C3E6825C1C85C1A70A2732DFA83FC7C3570965FE591BE60EA91678F3E67A46C04F77F692C0DCAFA125AF0E71FB6C276208472B9089B2F73979787BA9F789A213BBF63C90FD9E0EE5492BBE68476798DFBFA1AD5A30DD6739C24A333ECB8C22369F384416A533DC18D3FF5D1FD257950C0D384F9972E9BB48C64C9B224C672EC9D5991EE5E63FCA8BEBC2BEDCC853973CA3DCF663721FBB43EA33A1AFF8EBF02497252A2023024C98B68A90B9A2DF15911B53DF1AAABFB8DA7C79A5759A8BE9C6B18843F18A8D6A9A0C1AB4FB24A7862EA2D92F0B5A938D4FA37F6CD953D35F255815ED32015F9E</code></pre>
|
|
|
|
|
<pre><code>g_b = 830BF0AF2872BCAC62E7F6841937C7A2135D5988388BE5009309EA76974A290AFE797EC420AC562B972A1ECB110C8A475352C8EC1ADD022BE5612E9405541E2EED8FDF1296BB9EB31E8ADCBB81413D61D6CD8308D97D73718289BBFFBEE77305D3B8675FEF2676F003A71A0B112EB5776521DF16AC27025C73DBA12F1E91E713C650C9F905181E549BB1551BDAA84F2051D079FED5D81CEAA1DCA4A34DAF6E5D1477C4A88B727C1780C918AA5172A92EE417500D568DF1F00CF16223713C5F72FE7A9C534AD83AD331B6468A97030CAA344310C955128F950055FB7A10434F1ED310BD9422236595467B50A6B3E5DA33A1F2E859C2273657739CA8CCE70C3C1C</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 A6 B2 F8 1F 8F DB 3D 17 33 82 A6 28
|
|
|
|
|
0010 | 5E 43 3C 5E 57 23 72 FC D6 8B D9 7F 39 4B A8 98
|
|
|
|
|
0020 | AB 19 56 DE 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 96 97 72 FC E1 BA 2A 93 62 43 E1 15 0C 0F 3D 6E
|
|
|
|
|
0040 | 9F C1 FA B9 52 F8 17 F7 29 C3 E6 82 5C 1C 85 C1
|
|
|
|
|
0050 | A7 0A 27 32 DF A8 3F C7 C3 57 09 65 FE 59 1B E6
|
|
|
|
|
0060 | 0E A9 16 78 F3 E6 7A 46 C0 4F 77 F6 92 C0 DC AF
|
|
|
|
|
0070 | A1 25 AF 0E 71 FB 6C 27 62 08 47 2B 90 89 B2 F7
|
|
|
|
|
0080 | 39 79 78 7B A9 F7 89 A2 13 BB F6 3C 90 FD 9E 0E
|
|
|
|
|
0090 | E5 49 2B BE 68 47 67 98 DF BF A1 AD 5A 30 DD 67
|
|
|
|
|
00A0 | 39 C2 4A 33 3E CB 8C 22 36 9F 38 44 16 A5 33 DC
|
|
|
|
|
00B0 | 18 D3 FF 5D 1F D2 57 95 0C 0D 38 4F 99 72 E9 BB
|
|
|
|
|
00C0 | 48 C6 4C 9B 22 4C 67 2E C9 D5 99 1E E5 E6 3F CA
|
|
|
|
|
00D0 | 8B EB C2 BE DC C8 53 97 3C A3 DC F6 63 72 1F BB
|
|
|
|
|
00E0 | 43 EA 33 A1 AF F8 EB F0 24 97 25 2A 20 23 02 4C
|
|
|
|
|
00F0 | 98 B6 8A 90 B9 A2 DF 15 91 1B 53 DF 1A AA BF B8
|
|
|
|
|
0100 | DA 7C 79 A5 75 9A 8B E9 C6 B1 88 43 F1 8A 8D 6A
|
|
|
|
|
0110 | 9A 0C 1A B4 FB 24 A7 86 2E A2 D9 2F 0B 5A 93 8D
|
|
|
|
|
0120 | 4F A3 7F 6C D9 53 D3 5F 25 58 15 ED 32 01 5F 9E</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 66 1D B0 4F 07 59 BA 01 12 AF 0F 39
|
|
|
|
|
0010 | 23 A2 49 6C 48 E1 4C F6 49 34 95 00 BF 9F 7D B9
|
|
|
|
|
0020 | A9 72 79 46 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 83 0B F0 AF 28 72 BC AC 62 E7 F6 84 19 37 C7 A2
|
|
|
|
|
0040 | 13 5D 59 88 38 8B E5 00 93 09 EA 76 97 4A 29 0A
|
|
|
|
|
0050 | FE 79 7E C4 20 AC 56 2B 97 2A 1E CB 11 0C 8A 47
|
|
|
|
|
0060 | 53 52 C8 EC 1A DD 02 2B E5 61 2E 94 05 54 1E 2E
|
|
|
|
|
0070 | ED 8F DF 12 96 BB 9E B3 1E 8A DC BB 81 41 3D 61
|
|
|
|
|
0080 | D6 CD 83 08 D9 7D 73 71 82 89 BB FF BE E7 73 05
|
|
|
|
|
0090 | D3 B8 67 5F EF 26 76 F0 03 A7 1A 0B 11 2E B5 77
|
|
|
|
|
00A0 | 65 21 DF 16 AC 27 02 5C 73 DB A1 2F 1E 91 E7 13
|
|
|
|
|
00B0 | C6 50 C9 F9 05 18 1E 54 9B B1 55 1B DA A8 4F 20
|
|
|
|
|
00C0 | 51 D0 79 FE D5 D8 1C EA A1 DC A4 A3 4D AF 6E 5D
|
|
|
|
|
00D0 | 14 77 C4 A8 8B 72 7C 17 80 C9 18 AA 51 72 A9 2E
|
|
|
|
|
00E0 | E4 17 50 0D 56 8D F1 F0 0C F1 62 23 71 3C 5F 72
|
|
|
|
|
00F0 | FE 7A 9C 53 4A D8 3A D3 31 B6 46 8A 97 03 0C AA
|
|
|
|
|
0100 | 34 43 10 C9 55 12 8F 95 00 55 FB 7A 10 43 4F 1E
|
|
|
|
|
0110 | D3 10 BD 94 22 23 65 95 46 7B 50 A6 B3 E5 DA 33
|
|
|
|
|
0120 | A1 F2 E8 59 C2 27 36 57 73 9C A8 CC E7 0C 3C 1C</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 = BA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956D
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE000100969772FCE1BA2A936243E115</code> <code>0C0F3D6E9FC1FAB952F817F729C3E682</code> <code>5C1C85C1A70A2732DFA83FC7C3570965</code> <code>FE591BE60EA91678F3E67A46C04F77F6</code> <code>92C0DCAFA125AF0E71FB6C276208472B</code> <code>9089B2F73979787BA9F789A213BBF63C</code> <code>90FD9E0EE5492BBE68476798DFBFA1AD</code> <code>5A30DD6739C24A333ECB8C22369F3844</code> <code>16A533DC18D3FF5D1FD257950C0D384F</code> <code>9972E9BB48C64C9B224C672EC9D5991E</code> <code>E5E63FCA8BEBC2BEDCC853973CA3DCF6</code> <code>63721FBB43EA33A1AFF8EBF02497252A</code> <code>2023024C98B68A90B9A2DF15911B53DF</code> <code>1AAABFB8DA7C79A5759A8BE9C6B18843</code> <code>F18A8D6A9A0C1AB4FB24A7862EA2D92F</code> <code>0B5A938D4FA37F6CD953D35F255815ED</code><br> <code>32015F9E</code></td>
|
|
|
|
|
<td><code>FE000100830BF0AF2872BCAC62E7F684</code> <code>1937C7A2135D5988388BE5009309EA76</code> <code>974A290AFE797EC420AC562B972A1ECB</code> <code>110C8A475352C8EC1ADD022BE5612E94</code> <code>05541E2EED8FDF1296BB9EB31E8ADCBB</code> <code>81413D61D6CD8308D97D73718289BBFF</code> <code>BEE77305D3B8675FEF2676F003A71A0B</code> <code>112EB5776521DF16AC27025C73DBA12F</code> <code>1E91E713C650C9F905181E549BB1551B</code> <code>DAA84F2051D079FED5D81CEAA1DCA4A3</code> <code>4DAF6E5D1477C4A88B727C1780C918AA</code> <code>5172A92EE417500D568DF1F00CF16223</code> <code>713C5F72FE7A9C534AD83AD331B6468A</code> <code>97030CAA344310C955128F950055FB7A</code> <code>10434F1ED310BD9422236595467B50A6</code> <code>B3E5DA33A1F2E859C2273657739CA8CC</code><br> <code>E70C3C1C</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 = BA0D89B5A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956D
|
|
|
|
|
<!-- 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 = 54B64366A6B2F81F8FDB3D173382A6285E433C5E572372FCD68BD97F394BA898AB1956DE0000000000000000FE000100969772FCE1BA2A936243E1150C0F3D6E9FC1FAB952F817F729C3E6825C1C85C1A70A2732DFA83FC7C3570965FE591BE60EA91678F3E67A46C04F77F692C0DCAFA125AF0E71FB6C276208472B9089B2F73979787BA9F789A213BBF63C90FD9E0EE5492BBE68476798DFBFA1AD5A30DD6739C24A333ECB8C22369F384416A533DC18D3FF5D1FD257950C0D384F9972E9BB48C64C9B224C672EC9D5991EE5E63FCA8BEBC2BEDCC853973CA3DCF663721FBB43EA33A1AFF8EBF02497252A2023024C98B68A90B9A2DF15911B53DF1AAABFB8DA7C79A5759A8BE9C6B18843F18A8D6A9A0C1AB4FB24A7862EA2D92F0B5A938D4FA37F6CD953D35F255815ED32015F9E
|
|
|
|
|
padding = F668B655E93835549635A919
|
|
|
|
|
tmp_aes_key = D431055F7852B00BB641DE00717E3C33AD4CA820CAF6CB655007B603E0B12517
|
|
|
|
|
tmp_aes_iv = E22CBE27AAAF912C4CF8D06BA75F482EA4C255AD3EE6D08278028B8C45665BFB</code></pre>
|
|
|
|
|
<pre><code>data = 54B64366661DB04F0759BA0112AF0F3923A2496C48E14CF649349500BF9F7DB9A97279460000000000000000FE000100830BF0AF2872BCAC62E7F6841937C7A2135D5988388BE5009309EA76974A290AFE797EC420AC562B972A1ECB110C8A475352C8EC1ADD022BE5612E9405541E2EED8FDF1296BB9EB31E8ADCBB81413D61D6CD8308D97D73718289BBFFBEE77305D3B8675FEF2676F003A71A0B112EB5776521DF16AC27025C73DBA12F1E91E713C650C9F905181E549BB1551BDAA84F2051D079FED5D81CEAA1DCA4A34DAF6E5D1477C4A88B727C1780C918AA5172A92EE417500D568DF1F00CF16223713C5F72FE7A9C534AD83AD331B6468A97030CAA344310C955128F950055FB7A10434F1ED310BD9422236595467B50A6B3E5DA33A1F2E859C2273657739CA8CCE70C3C1C
|
|
|
|
|
padding = 0495A2AED26D20B4D93D7617
|
|
|
|
|
tmp_aes_key = C0AE07F359E603AE019348325A3FE140E375F720C5C6D2C10AEB06CA0E4D9D57
|
|
|
|
|
tmp_aes_iv = 451C92CCB113C91BD2488002975E2504B0186EE1450111840D5906603E94B4C7</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 = 2972F6F8B8F60A763B9B354CDAEE82840FD9EA2310156D74E43D07AD54C97B6690232A20FC71B26CECA538AB3EE460CC85F443BF2C87AC3E75D355751238D4A405F25F3954800CB91CB98B447608474F1423D9AE04E2BA52E5C8FCA0C7F80C82286C07EF88C8F778A6C120E0A97A9FCF8B4734C3F3BFE5A170300C1A402E68051B5293F72E1C731775A21CAE5C2C5217057A1E7AAF9FB7EBD02421992BB69BB24D03607DAEC57DF97284562BC88508C11F5228D4F09F16FAE729118FE51A9AB12B6271D46C4EDFC17CA51847DADB1EAD472C2EAD2281A844F8A655D25336E9042CD4396A3CF1AFC35B44D1DCB3C3EE53C2B9A14AD1A4B0FD309F41CDC4D3ECCC3BEE425C7D9F692DB8ACB0896506A870A947010FAEAE41FDE7EDC5774B733C4F1262A4A4665B27E139F85D6C24F6AC6A2E03B15B73880A5F9EAFE4E6547AAB60AFB18DA17EA838514FFB3B8C1EE647DB</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 43C6120427A24C91E43219FA479DBAB2625C8596B1C755CF095E0F6A48D18802E9192F0BB52788450D683F4336F6D6017C75A25EB43AE02F3DE269AB40E31CDFE1C3C026DE3F84B2B27DA4F5DE644E63BF98F6301522090F5F3514F767AFD0445AA94C46479C63466BEAD9E3B11F61A0A288C76F62332A64FB5774C3D0BD5859D23E7CD26F698500FEF7BDCC8C98FC95C4F4184EC603801F2B80C4D43B8701DCF9ECA5ABA1781F8210E6A0D4709E1185C02139620AFA985C416A31EE30D3A7119B3195FB45141920943D04339F624FD05E9240AF4247D8322D90A64F5A4331D735F83521A4A0FCB526D5294AFAF1F5517C278DB6EEACCE0D5CE510324F3F6E6943E17D45C35738E27955B7CAD246326B6E4AFB459FB843459CACEFFEBCA7F9F81E59BB5F06B4EE9FAA96B3588A7BE029DE0C750668DDCAA53D95A23F12A09A376F52F7F7216A4D811728A68DE2E3DB23</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 C0 03 00 B0 4D 99 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 A6 B2 F8 1F 8F DB 3D 17
|
|
|
|
|
0020 | 33 82 A6 28 5E 43 3C 5E 57 23 72 FC D6 8B D9 7F
|
|
|
|
|
0030 | 39 4B A8 98 AB 19 56 DE FE 50 01 00 29 72 F6 F8
|
|
|
|
|
0040 | B8 F6 0A 76 3B 9B 35 4C DA EE 82 84 0F D9 EA 23
|
|
|
|
|
0050 | 10 15 6D 74 E4 3D 07 AD 54 C9 7B 66 90 23 2A 20
|
|
|
|
|
0060 | FC 71 B2 6C EC A5 38 AB 3E E4 60 CC 85 F4 43 BF
|
|
|
|
|
0070 | 2C 87 AC 3E 75 D3 55 75 12 38 D4 A4 05 F2 5F 39
|
|
|
|
|
0080 | 54 80 0C B9 1C B9 8B 44 76 08 47 4F 14 23 D9 AE
|
|
|
|
|
0090 | 04 E2 BA 52 E5 C8 FC A0 C7 F8 0C 82 28 6C 07 EF
|
|
|
|
|
00A0 | 88 C8 F7 78 A6 C1 20 E0 A9 7A 9F CF 8B 47 34 C3
|
|
|
|
|
00B0 | F3 BF E5 A1 70 30 0C 1A 40 2E 68 05 1B 52 93 F7
|
|
|
|
|
00C0 | 2E 1C 73 17 75 A2 1C AE 5C 2C 52 17 05 7A 1E 7A
|
|
|
|
|
00D0 | AF 9F B7 EB D0 24 21 99 2B B6 9B B2 4D 03 60 7D
|
|
|
|
|
00E0 | AE C5 7D F9 72 84 56 2B C8 85 08 C1 1F 52 28 D4
|
|
|
|
|
00F0 | F0 9F 16 FA E7 29 11 8F E5 1A 9A B1 2B 62 71 D4
|
|
|
|
|
0100 | 6C 4E DF C1 7C A5 18 47 DA DB 1E AD 47 2C 2E AD
|
|
|
|
|
0110 | 22 81 A8 44 F8 A6 55 D2 53 36 E9 04 2C D4 39 6A
|
|
|
|
|
0120 | 3C F1 AF C3 5B 44 D1 DC B3 C3 EE 53 C2 B9 A1 4A
|
|
|
|
|
0130 | D1 A4 B0 FD 30 9F 41 CD C4 D3 EC CC 3B EE 42 5C
|
|
|
|
|
0140 | 7D 9F 69 2D B8 AC B0 89 65 06 A8 70 A9 47 01 0F
|
|
|
|
|
0150 | AE AE 41 FD E7 ED C5 77 4B 73 3C 4F 12 62 A4 A4
|
|
|
|
|
0160 | 66 5B 27 E1 39 F8 5D 6C 24 F6 AC 6A 2E 03 B1 5B
|
|
|
|
|
0170 | 73 88 0A 5F 9E AF E4 E6 54 7A AB 60 AF B1 8D A1
|
|
|
|
|
0180 | 7E A8 38 51 4F FB 3B 8C 1E E6 47 DB</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 08 E9 06 00 7A 5A 99 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 66 1D B0 4F 07 59 BA 01
|
|
|
|
|
0020 | 12 AF 0F 39 23 A2 49 6C 48 E1 4C F6 49 34 95 00
|
|
|
|
|
0030 | BF 9F 7D B9 A9 72 79 46 FE 50 01 00 43 C6 12 04
|
|
|
|
|
0040 | 27 A2 4C 91 E4 32 19 FA 47 9D BA B2 62 5C 85 96
|
|
|
|
|
0050 | B1 C7 55 CF 09 5E 0F 6A 48 D1 88 02 E9 19 2F 0B
|
|
|
|
|
0060 | B5 27 88 45 0D 68 3F 43 36 F6 D6 01 7C 75 A2 5E
|
|
|
|
|
0070 | B4 3A E0 2F 3D E2 69 AB 40 E3 1C DF E1 C3 C0 26
|
|
|
|
|
0080 | DE 3F 84 B2 B2 7D A4 F5 DE 64 4E 63 BF 98 F6 30
|
|
|
|
|
0090 | 15 22 09 0F 5F 35 14 F7 67 AF D0 44 5A A9 4C 46
|
|
|
|
|
00A0 | 47 9C 63 46 6B EA D9 E3 B1 1F 61 A0 A2 88 C7 6F
|
|
|
|
|
00B0 | 62 33 2A 64 FB 57 74 C3 D0 BD 58 59 D2 3E 7C D2
|
|
|
|
|
00C0 | 6F 69 85 00 FE F7 BD CC 8C 98 FC 95 C4 F4 18 4E
|
|
|
|
|
00D0 | C6 03 80 1F 2B 80 C4 D4 3B 87 01 DC F9 EC A5 AB
|
|
|
|
|
00E0 | A1 78 1F 82 10 E6 A0 D4 70 9E 11 85 C0 21 39 62
|
|
|
|
|
00F0 | 0A FA 98 5C 41 6A 31 EE 30 D3 A7 11 9B 31 95 FB
|
|
|
|
|
0100 | 45 14 19 20 94 3D 04 33 9F 62 4F D0 5E 92 40 AF
|
|
|
|
|
0110 | 42 47 D8 32 2D 90 A6 4F 5A 43 31 D7 35 F8 35 21
|
|
|
|
|
0120 | A4 A0 FC B5 26 D5 29 4A FA F1 F5 51 7C 27 8D B6
|
|
|
|
|
0130 | EE AC CE 0D 5C E5 10 32 4F 3F 6E 69 43 E1 7D 45
|
|
|
|
|
0140 | C3 57 38 E2 79 55 B7 CA D2 46 32 6B 6E 4A FB 45
|
|
|
|
|
0150 | 9F B8 43 45 9C AC EF FE BC A7 F9 F8 1E 59 BB 5F
|
|
|
|
|
0160 | 06 B4 EE 9F AA 96 B3 58 8A 7B E0 29 DE 0C 75 06
|
|
|
|
|
0170 | 68 DD CA A5 3D 95 A2 3F 12 A0 9A 37 6F 52 F7 F7
|
|
|
|
|
0180 | 21 6A 4D 81 17 28 A6 8D E2 E3 DB 23</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>24C00300B04D9966</code></td>
|
|
|
|
|
<td><code>08E906007A5A9966</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE5001002972F6F8B8F60A763B9B354C</code> <code>DAEE82840FD9EA2310156D74E43D07AD</code> <code>54C97B6690232A20FC71B26CECA538AB</code> <code>3EE460CC85F443BF2C87AC3E75D35575</code> <code>1238D4A405F25F3954800CB91CB98B44</code> <code>7608474F1423D9AE04E2BA52E5C8FCA0</code> <code>C7F80C82286C07EF88C8F778A6C120E0</code> <code>A97A9FCF8B4734C3F3BFE5A170300C1A</code> <code>402E68051B5293F72E1C731775A21CAE</code> <code>5C2C5217057A1E7AAF9FB7EBD0242199</code> <code>2BB69BB24D03607DAEC57DF97284562B</code> <code>C88508C11F5228D4F09F16FAE729118F</code> <code>E51A9AB12B6271D46C4EDFC17CA51847</code> <code>DADB1EAD472C2EAD2281A844F8A655D2</code> <code>5336E9042CD4396A3CF1AFC35B44D1DC</code> <code>B3C3EE53C2B9A14AD1A4B0FD309F41CD</code> <code>C4D3ECCC3BEE425C7D9F692DB8ACB089</code> <code>6506A870A947010FAEAE41FDE7EDC577</code> <code>4B733C4F1262A4A4665B27E139F85D6C</code> <code>24F6AC6A2E03B15B73880A5F9EAFE4E6</code> <code>547AAB60AFB18DA17EA838514FFB3B8C</code><br> <code>1EE647DB</code></td>
|
|
|
|
|
<td><code>FE50010043C6120427A24C91E43219FA</code> <code>479DBAB2625C8596B1C755CF095E0F6A</code> <code>48D18802E9192F0BB52788450D683F43</code> <code>36F6D6017C75A25EB43AE02F3DE269AB</code> <code>40E31CDFE1C3C026DE3F84B2B27DA4F5</code> <code>DE644E63BF98F6301522090F5F3514F7</code> <code>67AFD0445AA94C46479C63466BEAD9E3</code> <code>B11F61A0A288C76F62332A64FB5774C3</code> <code>D0BD5859D23E7CD26F698500FEF7BDCC</code> <code>8C98FC95C4F4184EC603801F2B80C4D4</code> <code>3B8701DCF9ECA5ABA1781F8210E6A0D4</code> <code>709E1185C02139620AFA985C416A31EE</code> <code>30D3A7119B3195FB45141920943D0433</code> <code>9F624FD05E9240AF4247D8322D90A64F</code> <code>5A4331D735F83521A4A0FCB526D5294A</code> <code>FAF1F5517C278DB6EEACCE0D5CE51032</code> <code>4F3F6E6943E17D45C35738E27955B7CA</code> <code>D246326B6E4AFB459FB843459CACEFFE</code> <code>BCA7F9F81E59BB5F06B4EE9FAA96B358</code> <code>8A7BE029DE0C750668DDCAA53D95A23F</code> <code>12A09A376F52F7F7216A4D811728A68D</code><br> <code>E2E3DB23</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 = 71724462E7CBA8F41C0D5B3CC0020CB3C6265109EE49272995FBBA174F30C6A94BA1EDEAA5120D706BC5299F808B4914A07D8D81209E7654B92097E4F168B0F96D432B7D7B919B1ED870A07221AB0C1F6C4A7CB3F9925C4EDC23673D9BD9FD6B3C3EC157CB54DACD7F04BE900FC2F1100EE5C131AC3377CFAE8166337915BF3AFDB7693DCE5E17B9FDAFEDD50F6127C47384379AB70CCF814442C5DCA6013813643EB191C08646BA3C94712E5AB0A615DE022CBBFD5508981ADA93B5FC30E619C96F6E80148B5736772EF97F513EC5D8AA40CB1BEDEA11AE3B130D5DD091717C32E73EA051210553C95215F6EC9A68578C5D9B8748BD2F75028659EBB773EDAF</code></pre>
|
|
|
|
|
<pre><code>auth_key = B9837DDE70F14154F5365D8F1BA15272D77A62EC2249D1A87CD6C98FCC6464D4912437D4F93FD0170C291BD9ECF7DDB6028C1BDBECA0A8D817980D7FC868346FB88F5062B89DD6CF2B05D78A3CFE77C56F81D6F056C3ECFC6047042A0583F39200D51D9662105A744B12C7E7A1ABD2C40353C9E12527B14B4184175E6CA014264F46932B7637A8B1AF03C1368BA5685114F574D74A1C5FF97631E8087F3DF3A995AFAFB86DBE5D9DE8EA1F2A1FDBF4EF36EEB23A8F436FB4F4A72B942EECD1B648AA311CD2B0840C2EFB06B8B2024E148FF501ED61BD04774EA4E59EC1B458A4CA59520A806EAA7FE49ACE8058C174BDCD6D064E2F55D79BD64891A38AFCB594</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 54 48 0A B1 4D 99 66
|
|
|
|
|
0010 | 7C 00 00 00 34 F7 CB 3B A6 B2 F8 1F 8F DB 3D 17
|
|
|
|
|
0020 | 33 82 A6 28 5E 43 3C 5E 57 23 72 FC D6 8B D9 7F
|
|
|
|
|
0030 | 39 4B A8 98 AB 19 56 DE E1 34 34 5D C1 4B 2D A1
|
|
|
|
|
0040 | 74 21 33 B5 3C 2A BE 8F</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 14 C7 29 7B 5A 99 66
|
|
|
|
|
0010 | 64 00 00 00 34 F7 CB 3B 66 1D B0 4F 07 59 BA 01
|
|
|
|
|
0020 | 12 AF 0F 39 23 A2 49 6C 48 E1 4C F6 49 34 95 00
|
|
|
|
|
0030 | BF 9F 7D B9 A9 72 79 46 95 AB 21 37 B1 76 91 42
|
|
|
|
|
0040 | 7D A0 66 B8 06 E6 BD EF</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>0154480AB14D9966</code></td>
|
|
|
|
|
<td><code>0114C7297B5A9966</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>7C000000</code> (124 in decimal)</td>
|
|
|
|
|
<td><code>64000000</code> (100 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>A6B2F81F8FDB3D173382A6285E433C5E</code></td>
|
|
|
|
|
<td><code>661DB04F0759BA0112AF0F3923A2496C</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>572372FCD68BD97F394BA898AB1956DE</code></td>
|
|
|
|
|
<td><code>48E14CF649349500BF9F7DB9A9727946</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>E134345DC14B2DA1742133B53C2ABE8F</code></td>
|
|
|
|
|
<td><code>95AB2137B17691427DA066B806E6BDEF</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>
|
|
|
|
|