|
|
|
@ -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 A8 CF 05 00 9C 5A 99 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 50 78 49 F0 BB 9C 45 7D
|
|
|
|
|
0020 | BC E9 A3 22 DE EC 98 B7</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 F4 8D 0A 00 3B 0F 9D 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 87 11 D2 E9 BD E2 03 D7
|
|
|
|
|
0020 | 71 A6 F8 F0 E3 83 49 3A</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>A8CF05009C5A9966</code></td>
|
|
|
|
|
<td><code>F48D0A003B0F9D66</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>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</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 C4 B9 5E 9C 5A 99 66
|
|
|
|
|
0010 | 58 00 00 00 63 24 16 05 50 78 49 F0 BB 9C 45 7D
|
|
|
|
|
0020 | BC E9 A3 22 DE EC 98 B7 4C A9 67 F1 E6 C7 3D 67
|
|
|
|
|
0030 | 7B 05 7D BF 78 DF F1 D3 08 15 80 49 4E 74 1B AD
|
|
|
|
|
0040 | 5D 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 D4 D7 12 3C 0F 9D 66
|
|
|
|
|
0010 | 8C 00 00 00 63 24 16 05 87 11 D2 E9 BD E2 03 D7
|
|
|
|
|
0020 | 71 A6 F8 F0 E3 83 49 3A BF C4 18 CE E6 29 41 11
|
|
|
|
|
0030 | 19 1F 18 97 9B 20 FE A2 08 1C 1A A5 3E CC 9C 7E
|
|
|
|
|
0040 | 5F 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>01C4B95E9C5A9966</code></td>
|
|
|
|
|
<td><code>01D4D7123C0F9D66</code></td>
|
|
|
|
|
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_length</td>
|
|
|
|
|
<td>16, 4</td>
|
|
|
|
|
<td><code>58000000</code> (88 in decimal)</td>
|
|
|
|
|
<td><code>8C000000</code> (140 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>081580494E741BAD5D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1549318873119698269</td>
|
|
|
|
|
<td><code>081C1AA53ECC9C7E5F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2025112671595822687</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 = 1549318873119698269</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1549318873119698269 = 1070932559 * 1446700691</code></p>
|
|
|
|
|
<pre><code>p = 1070932559
|
|
|
|
|
q = 1446700691</code></pre>
|
|
|
|
|
<pre><code>pq = 2025112671595822687</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2025112671595822687 = 1317351229 * 1537261003</code></p>
|
|
|
|
|
<pre><code>p = 1317351229
|
|
|
|
|
q = 1537261003</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 15 80 49 4E 74 1B AD 5D 00 00 00
|
|
|
|
|
0010 | 04 3F D5 22 4F 00 00 00 04 56 3A E6 93 00 00 00
|
|
|
|
|
0020 | 50 78 49 F0 BB 9C 45 7D BC E9 A3 22 DE EC 98 B7
|
|
|
|
|
0030 | 4C A9 67 F1 E6 C7 3D 67 7B 05 7D BF 78 DF F1 D3
|
|
|
|
|
0040 | 4C E5 4E 26 62 A1 A6 0A BC 08 A2 9E 87 60 12 43
|
|
|
|
|
0050 | 40 51 A0 F7 BE 6B 2A CB A0 2B E1 71 F0 97 5A 9C
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 1C 1A A5 3E CC 9C 7E 5F 00 00 00
|
|
|
|
|
0010 | 04 4E 85 2F 3D 00 00 00 04 5B A0 BD CB 00 00 00
|
|
|
|
|
0020 | 87 11 D2 E9 BD E2 03 D7 71 A6 F8 F0 E3 83 49 3A
|
|
|
|
|
0030 | BF C4 18 CE E6 29 41 11 19 1F 18 97 9B 20 FE A2
|
|
|
|
|
0040 | 2F 73 F3 1C 4A 03 4B BE FA 4C 00 46 47 04 13 8C
|
|
|
|
|
0050 | 22 F3 27 4C 0A FE 8C 98 70 CC 93 A0 B8 32 D8 13
|
|
|
|
|
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 = 1446700691</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>081580494E741BAD5D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1549318873119698269</td>
|
|
|
|
|
<td><code>081C1AA53ECC9C7E5F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2025112671595822687</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>043FD5224F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1070932559</td>
|
|
|
|
|
<td><code>044E852F3D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1317351229</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>04563AE693000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1446700691</td>
|
|
|
|
|
<td><code>045BA0BDCB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1537261003</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>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>4CE54E2662A1A60ABC08A29E87601243</code> <code>4051A0F7BE6B2ACBA02BE171F0975A9C</code></td>
|
|
|
|
|
<td><code>2F73F31C4A034BBEFA4C00464704138C</code> <code>22F3274C0AFE8C9870CC93A0B832D813</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1446700691</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 = 955FF5A9081580494E741BAD5D000000043FD5224F00000004563AE693000000507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D34CE54E2662A1A60ABC08A29E876012434051A0F7BE6B2ACBA02BE171F0975A9C02000000
|
|
|
|
|
random_padding_bytes = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C04FE74F2759D57CA75B699AB792ABE14574536B3ECEABC3688443716844D56933365C11811B9D7B374BB75C17A4682198EA2DA4E15C108CA12EE0BC312F7631</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A9081C1AA53ECC9C7E5F000000044E852F3D000000045BA0BDCB0000008711D2E9BDE203D771A6F8F0E383493ABFC418CEE6294111191F18979B20FEA22F73F31C4A034BBEFA4C00464704138C22F3274C0AFE8C9870CC93A0B832D81302000000
|
|
|
|
|
random_padding_bytes = 2375E534865DF669522D20070A3DF3827C6B25E63E995C27858090AB4274E00EF1405B9AF76F8AE31368D3FF7F32116BEEE79E87F854C34B9CF1A2DD75081260BEF7E1BDCE5EB6F45423841D7C6A420F017FAAB0974CC83E200A4F54</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 = CBD04170B7D52A56D5A87939331B3C87B14EBF66602DB5D6F418B453BD58A2426D9FAF245BE3AE9B66292A7ED4574370994BE43BEBC2792A7C00D02D5A9DF226C6A1493A0CA4C994A80937E5D0B8E641FAB53DF19F79F1E3752F47A3CC6A4092FF924A5A402523C8B9C38273450CF0E52AD19BFA8B9F78697B1A34FAB84816E7191845C032A2600C41B456072CDEEC639BB3126F77FF6D5C99739D8EF36FC9A809D1776A22889BBF06467E818E5276914957EF367EC86422ADC37077D7C756C29F527F672550ACD9836C27202763EFF095645FB7EED4380F9B8CAC50D966D790064876C545FC0BFDC54BDF9044B6DB01A305BA19005D3306FBBEB2646E8D4864</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 1A57BE4AD462E19AF0626B7D814A4B7755D4717B37D3DB33D45BE3700280293804330E7F8814BDB5D79954F36375C5BD374DDA89F63295CE4130E96C8CDB1274C2D25A4B8F4D83D9FA2361BCA51E9A495683E6CF5A65D0241FCCCCF75715587023E3E2DAC146529E9ADF4331B051937FED6AAD636A076F29DA0FEF370F3AA0873C0AADE9542D3C0DB92A9484540F76C5703E4EEC4769061BE84E86B60B382DF15FF94072A4FDBD585CC47F0BF9D2B223510CC982F4DDE431F518B993C853E3194C00F442E9C06E15D3F32E6AAA2C000A3302105B4741158638ABFB72AE69735C41FFFB46DB731FB5191E00E858D87B7628D052E46E3774AA3805E0C57906F9D3</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 38 7A 0D 00 9C 5A 99 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 50 78 49 F0 BB 9C 45 7D
|
|
|
|
|
0020 | BC E9 A3 22 DE EC 98 B7 4C A9 67 F1 E6 C7 3D 67
|
|
|
|
|
0030 | 7B 05 7D BF 78 DF F1 D3 04 3F D5 22 4F 00 00 00
|
|
|
|
|
0040 | 04 56 3A E6 93 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 CB D0 41 70 B7 D5 2A 56 D5 A8 79 39
|
|
|
|
|
0060 | 33 1B 3C 87 B1 4E BF 66 60 2D B5 D6 F4 18 B4 53
|
|
|
|
|
0070 | BD 58 A2 42 6D 9F AF 24 5B E3 AE 9B 66 29 2A 7E
|
|
|
|
|
0080 | D4 57 43 70 99 4B E4 3B EB C2 79 2A 7C 00 D0 2D
|
|
|
|
|
0090 | 5A 9D F2 26 C6 A1 49 3A 0C A4 C9 94 A8 09 37 E5
|
|
|
|
|
00A0 | D0 B8 E6 41 FA B5 3D F1 9F 79 F1 E3 75 2F 47 A3
|
|
|
|
|
00B0 | CC 6A 40 92 FF 92 4A 5A 40 25 23 C8 B9 C3 82 73
|
|
|
|
|
00C0 | 45 0C F0 E5 2A D1 9B FA 8B 9F 78 69 7B 1A 34 FA
|
|
|
|
|
00D0 | B8 48 16 E7 19 18 45 C0 32 A2 60 0C 41 B4 56 07
|
|
|
|
|
00E0 | 2C DE EC 63 9B B3 12 6F 77 FF 6D 5C 99 73 9D 8E
|
|
|
|
|
00F0 | F3 6F C9 A8 09 D1 77 6A 22 88 9B BF 06 46 7E 81
|
|
|
|
|
0100 | 8E 52 76 91 49 57 EF 36 7E C8 64 22 AD C3 70 77
|
|
|
|
|
0110 | D7 C7 56 C2 9F 52 7F 67 25 50 AC D9 83 6C 27 20
|
|
|
|
|
0120 | 27 63 EF F0 95 64 5F B7 EE D4 38 0F 9B 8C AC 50
|
|
|
|
|
0130 | D9 66 D7 90 06 48 76 C5 45 FC 0B FD C5 4B DF 90
|
|
|
|
|
0140 | 44 B6 DB 01 A3 05 BA 19 00 5D 33 06 FB BE B2 64
|
|
|
|
|
0150 | 6E 8D 48 64</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 7C 2E 02 00 3C 0F 9D 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 87 11 D2 E9 BD E2 03 D7
|
|
|
|
|
0020 | 71 A6 F8 F0 E3 83 49 3A BF C4 18 CE E6 29 41 11
|
|
|
|
|
0030 | 19 1F 18 97 9B 20 FE A2 04 4E 85 2F 3D 00 00 00
|
|
|
|
|
0040 | 04 5B A0 BD CB 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 1A 57 BE 4A D4 62 E1 9A F0 62 6B 7D
|
|
|
|
|
0060 | 81 4A 4B 77 55 D4 71 7B 37 D3 DB 33 D4 5B E3 70
|
|
|
|
|
0070 | 02 80 29 38 04 33 0E 7F 88 14 BD B5 D7 99 54 F3
|
|
|
|
|
0080 | 63 75 C5 BD 37 4D DA 89 F6 32 95 CE 41 30 E9 6C
|
|
|
|
|
0090 | 8C DB 12 74 C2 D2 5A 4B 8F 4D 83 D9 FA 23 61 BC
|
|
|
|
|
00A0 | A5 1E 9A 49 56 83 E6 CF 5A 65 D0 24 1F CC CC F7
|
|
|
|
|
00B0 | 57 15 58 70 23 E3 E2 DA C1 46 52 9E 9A DF 43 31
|
|
|
|
|
00C0 | B0 51 93 7F ED 6A AD 63 6A 07 6F 29 DA 0F EF 37
|
|
|
|
|
00D0 | 0F 3A A0 87 3C 0A AD E9 54 2D 3C 0D B9 2A 94 84
|
|
|
|
|
00E0 | 54 0F 76 C5 70 3E 4E EC 47 69 06 1B E8 4E 86 B6
|
|
|
|
|
00F0 | 0B 38 2D F1 5F F9 40 72 A4 FD BD 58 5C C4 7F 0B
|
|
|
|
|
0100 | F9 D2 B2 23 51 0C C9 82 F4 DD E4 31 F5 18 B9 93
|
|
|
|
|
0110 | C8 53 E3 19 4C 00 F4 42 E9 C0 6E 15 D3 F3 2E 6A
|
|
|
|
|
0120 | AA 2C 00 0A 33 02 10 5B 47 41 15 86 38 AB FB 72
|
|
|
|
|
0130 | AE 69 73 5C 41 FF FB 46 DB 73 1F B5 19 1E 00 E8
|
|
|
|
|
0140 | 58 D8 7B 76 28 D0 52 E4 6E 37 74 AA 38 05 E0 C5
|
|
|
|
|
0150 | 79 06 F9 D3</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 = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>387A0D009C5A9966</code></td>
|
|
|
|
|
<td><code>7C2E02003C0F9D66</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 = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>043FD5224F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1070932559</td>
|
|
|
|
|
<td><code>044E852F3D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1317351229</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>04563AE693000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1446700691</td>
|
|
|
|
|
<td><code>045BA0BDCB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1537261003</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 = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE000100CBD04170B7D52A56D5A87939</code> <code>331B3C87B14EBF66602DB5D6F418B453</code> <code>BD58A2426D9FAF245BE3AE9B66292A7E</code> <code>D4574370994BE43BEBC2792A7C00D02D</code> <code>5A9DF226C6A1493A0CA4C994A80937E5</code> <code>D0B8E641FAB53DF19F79F1E3752F47A3</code> <code>CC6A4092FF924A5A402523C8B9C38273</code> <code>450CF0E52AD19BFA8B9F78697B1A34FA</code> <code>B84816E7191845C032A2600C41B45607</code> <code>2CDEEC639BB3126F77FF6D5C99739D8E</code> <code>F36FC9A809D1776A22889BBF06467E81</code> <code>8E5276914957EF367EC86422ADC37077</code> <code>D7C756C29F527F672550ACD9836C2720</code> <code>2763EFF095645FB7EED4380F9B8CAC50</code> <code>D966D790064876C545FC0BFDC54BDF90</code> <code>44B6DB01A305BA19005D3306FBBEB264</code><br> <code>6E8D4864</code></td>
|
|
|
|
|
<td><code>FE0001001A57BE4AD462E19AF0626B7D</code> <code>814A4B7755D4717B37D3DB33D45BE370</code> <code>0280293804330E7F8814BDB5D79954F3</code> <code>6375C5BD374DDA89F63295CE4130E96C</code> <code>8CDB1274C2D25A4B8F4D83D9FA2361BC</code> <code>A51E9A495683E6CF5A65D0241FCCCCF7</code> <code>5715587023E3E2DAC146529E9ADF4331</code> <code>B051937FED6AAD636A076F29DA0FEF37</code> <code>0F3AA0873C0AADE9542D3C0DB92A9484</code> <code>540F76C5703E4EEC4769061BE84E86B6</code> <code>0B382DF15FF94072A4FDBD585CC47F0B</code> <code>F9D2B223510CC982F4DDE431F518B993</code> <code>C853E3194C00F442E9C06E15D3F32E6A</code> <code>AA2C000A3302105B4741158638ABFB72</code> <code>AE69735C41FFFB46DB731FB5191E00E8</code> <code>58D87B7628D052E46E3774AA3805E0C5</code><br> <code>7906F9D3</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C
|
|
|
|
|
<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 DF 16 9D 5A 99 66
|
|
|
|
|
0010 | 78 02 00 00 5C 07 E8 D0 50 78 49 F0 BB 9C 45 7D
|
|
|
|
|
0020 | BC E9 A3 22 DE EC 98 B7 4C A9 67 F1 E6 C7 3D 67
|
|
|
|
|
0030 | 7B 05 7D BF 78 DF F1 D3 FE 50 02 00 7B 41 FC 63
|
|
|
|
|
0040 | C4 53 22 E6 F7 9E 95 DD F1 5D 5A 51 8D 10 C5 9E
|
|
|
|
|
0050 | 4A E3 9C EE 98 19 D8 A6 FC E6 12 6B 3C 85 0D 21
|
|
|
|
|
0060 | 3F F2 49 1E 21 3E EC D9 FC C2 2A 29 A8 13 C4 83
|
|
|
|
|
0070 | 61 E2 68 CE 88 7B E4 D9 71 81 12 B9 F2 E9 40 39
|
|
|
|
|
0080 | 6E 24 4D 55 9A 47 71 13 14 8B 81 A4 26 D4 48 AF
|
|
|
|
|
0090 | 0C 83 7A 56 F4 40 7F 37 57 3F 69 25 B5 3D 30 F2
|
|
|
|
|
00A0 | BE 53 C6 59 F0 05 74 B1 5C E0 76 36 B9 9E 2F 39
|
|
|
|
|
00B0 | 9F B6 52 6A 87 37 50 D6 E3 B7 10 EB F0 F5 EA F5
|
|
|
|
|
00C0 | 37 E9 40 21 EB E2 04 A0 F7 D3 CD F6 B3 3C 0D C5
|
|
|
|
|
00D0 | 62 5D 61 81 94 5B 42 9A B4 DD 45 F7 6D 98 30 38
|
|
|
|
|
00E0 | 2D 45 97 C0 4A 18 77 07 66 32 52 DC F9 08 5A 28
|
|
|
|
|
00F0 | 73 9E C3 67 79 35 AD 98 A3 07 3E A3 C6 60 CE FF
|
|
|
|
|
0100 | 86 79 B8 09 10 64 71 0C 8D 7D AF 74 3B 3D BD FF
|
|
|
|
|
0110 | 76 F4 A8 CE E2 AE 11 7C FF 8F 55 CA D2 2C E9 AD
|
|
|
|
|
0120 | 53 71 05 B0 5A CA 45 49 36 CD 42 F9 40 05 6C AA
|
|
|
|
|
0130 | 21 37 E0 21 3F A5 4C 5C B6 E4 17 1F 43 8D 0C CF
|
|
|
|
|
0140 | 00 F8 3E 43 F4 01 BC 9A 14 E2 CE 33 9E E9 40 4F
|
|
|
|
|
0150 | BA 31 B6 D9 AA A9 48 65 25 B3 DE ED 66 FA 39 D1
|
|
|
|
|
0160 | EE 0B 20 9C 75 5A E6 84 5C 70 F0 E3 62 DE BA CC
|
|
|
|
|
0170 | 28 3E F3 30 50 AA D3 EA 9C 07 3B 68 7E 99 7B 56
|
|
|
|
|
0180 | 51 D5 78 51 43 51 67 5C B4 BE 5B DC 00 42 72 F0
|
|
|
|
|
0190 | A9 3C 79 C0 71 4C 1D DE 08 96 F4 C7 3E A1 C0 6E
|
|
|
|
|
01A0 | 3E B3 60 56 87 68 B5 71 5A E0 CB B0 01 14 E3 15
|
|
|
|
|
01B0 | 22 98 37 C9 7B 4E 4C 05 E5 18 8F D1 60 D6 68 60
|
|
|
|
|
01C0 | 8B F8 E8 0F B2 E4 28 5B ED 78 3C 2C C7 B9 B0 6F
|
|
|
|
|
01D0 | 97 FF 5F CA F8 35 C1 9E A7 DE 22 70 B8 50 7A E8
|
|
|
|
|
01E0 | B6 7C 08 82 F8 D7 F2 25 AE D8 FB 26 BD 8A 2F 84
|
|
|
|
|
01F0 | 87 CC 30 94 48 44 A2 33 A8 62 BF AD 75 69 D7 06
|
|
|
|
|
0200 | 2E 10 6A 2C 16 E4 6D D1 AE 00 A4 AD B9 F9 5D 08
|
|
|
|
|
0210 | 05 9D 4A 36 FF 72 E0 0B 9F 14 35 66 67 02 34 19
|
|
|
|
|
0220 | CC 94 EF 62 FE F6 7A 62 DB 63 28 70 A2 F7 DB DB
|
|
|
|
|
0230 | 94 DA 7E DB 7B 50 49 73 09 B6 4F 8C 45 C8 29 BE
|
|
|
|
|
0240 | D3 89 DC 15 75 1C 5B 74 F5 74 4A F4 03 7E 2C 86
|
|
|
|
|
0250 | 45 74 92 7A C2 E8 26 C2 20 10 5F A5 4B B5 3B 8E
|
|
|
|
|
0260 | 09 8D 27 00 65 7F 87 E4 AE AD 2D 28 E1 02 7E 2C
|
|
|
|
|
0270 | 55 BA 96 D5 8C 99 08 E4 7E F8 C6 CF 88 07 AF B9
|
|
|
|
|
0280 | 48 A4 A9 3E EC 83 D6 2B D5 A6 4C E5</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 90 75 ED 3C 0F 9D 66
|
|
|
|
|
0010 | 7C 02 00 00 5C 07 E8 D0 87 11 D2 E9 BD E2 03 D7
|
|
|
|
|
0020 | 71 A6 F8 F0 E3 83 49 3A BF C4 18 CE E6 29 41 11
|
|
|
|
|
0030 | 19 1F 18 97 9B 20 FE A2 FE 50 02 00 87 18 96 2F
|
|
|
|
|
0040 | 19 E8 C5 0E 8F 02 F4 C8 11 13 94 16 44 C3 A0 C0
|
|
|
|
|
0050 | 20 E6 88 EF 01 33 2B 1F F0 FC 8E 78 2E 65 B0 40
|
|
|
|
|
0060 | EE EC A9 39 43 7C 28 AF 61 53 84 59 A0 EA 88 D5
|
|
|
|
|
0070 | 91 8E 9C 31 19 82 32 24 D7 FA C1 1B EB 9C 2D FD
|
|
|
|
|
0080 | D7 F7 9B BD 8C 3B D6 5D 01 9D B3 C3 2C B7 1D D7
|
|
|
|
|
0090 | 53 63 56 3A 4F 26 D9 30 D2 FB 14 24 9A 15 39 31
|
|
|
|
|
00A0 | 7C AD 40 F6 58 D8 AC 4F 6B F3 B6 13 E7 A5 81 A4
|
|
|
|
|
00B0 | 2E D5 63 25 7E 41 1E 74 2D 26 29 35 EC 62 C0 63
|
|
|
|
|
00C0 | 6E 41 B2 A4 74 23 6A 91 0E 08 4C 31 A0 29 5F B8
|
|
|
|
|
00D0 | 4D BB 55 61 6C 62 61 7C 46 42 FF 1C AF 13 F7 2D
|
|
|
|
|
00E0 | 3E D2 84 01 5B 79 89 10 C0 AB 38 42 B8 1E 89 19
|
|
|
|
|
00F0 | 7A 12 8A 2E 38 D7 DC DC CA 77 DD 7B E8 F8 C0 DA
|
|
|
|
|
0100 | CC 16 70 03 06 06 5B FA DC 0D 39 14 6B DA F6 90
|
|
|
|
|
0110 | 89 4D 2C A7 63 3D 03 AA 62 14 CE FA 1E AD 86 B1
|
|
|
|
|
0120 | C4 72 C0 0C 29 6F 29 E1 E4 37 09 0B A3 2F C0 F1
|
|
|
|
|
0130 | E2 52 5C 3B FC C5 CB 7C 49 D7 E7 C3 B9 7E B8 3C
|
|
|
|
|
0140 | 0B E1 4D B4 E9 64 C2 1F 57 73 61 D9 9E A8 54 2A
|
|
|
|
|
0150 | BA D7 C7 DF 7E DA E6 79 00 B1 48 9F 00 3A EC 85
|
|
|
|
|
0160 | 4E 64 95 6D 25 B8 27 A3 7B 82 60 3E DE 42 C9 AA
|
|
|
|
|
0170 | 53 E5 B9 5D C9 02 44 9F 41 64 16 3F 74 4F 70 2A
|
|
|
|
|
0180 | 84 44 10 C6 89 3B CD 58 92 A0 8F 43 8F 37 4E D1
|
|
|
|
|
0190 | 91 D6 CA 43 36 D5 CE 0D 7A 8E 4B 72 BB 09 1A 7B
|
|
|
|
|
01A0 | 9D 7E 12 CB 9B EF EB DE 8B 3C 3C 91 6E 36 48 5F
|
|
|
|
|
01B0 | DB 1F 38 74 36 65 3C 8B 02 0A 59 D0 D7 16 25 17
|
|
|
|
|
01C0 | 71 AE B9 72 DA E6 1D AC 6D D1 96 E8 00 4D E1 98
|
|
|
|
|
01D0 | 81 A6 06 65 B2 A8 D3 C4 B5 B3 AE 7C BE 6F E7 65
|
|
|
|
|
01E0 | F5 BF 8E 76 C3 10 2C DB 35 CC E6 7C 6D B6 AD 9F
|
|
|
|
|
01F0 | 74 8E B7 3F 23 E5 4B 99 93 D6 84 34 B5 54 87 2E
|
|
|
|
|
0200 | 1B 1D E5 8E AA 82 04 F7 9E 53 03 AD D7 F3 21 C4
|
|
|
|
|
0210 | EB 41 7B A0 FF E7 52 6B 86 71 99 0C 78 E9 CA 80
|
|
|
|
|
0220 | E2 99 A6 0E EC 36 1B F4 CE FC 09 A5 3F B2 67 B5
|
|
|
|
|
0230 | 02 45 E6 17 2C 7D 0C 54 DA 7C 05 8D 48 5F 56 B8
|
|
|
|
|
0240 | 90 C5 E2 88 45 7C 77 2C 9A 93 53 D1 20 84 25 41
|
|
|
|
|
0250 | 61 9A 83 9B 93 4C 58 00 DD 6B DD 10 36 68 64 20
|
|
|
|
|
0260 | 13 6E 7A 41 F4 0E B4 CB ED A0 EA 21 41 F8 A4 47
|
|
|
|
|
0270 | AA 72 58 DF 5E 66 AE DB A1 7B FA 4C B3 63 2B 20
|
|
|
|
|
0280 | 3F 97 E3 48 90 F5 AF FE F8 0D 16 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 = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>0130DF169D5A9966</code></td>
|
|
|
|
|
<td><code>019075ED3C0F9D66</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>78020000</code> (632 in decimal)</td>
|
|
|
|
|
<td><code>7C020000</code> (636 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE5002007B41FC63C45322E6F79E95DD</code> <code>F15D5A518D10C59E4AE39CEE9819D8A6</code> <code>FCE6126B3C850D213FF2491E213EECD9</code> <code>FCC22A29A813C48361E268CE887BE4D9</code> <code>718112B9F2E940396E244D559A477113</code> <code>148B81A426D448AF0C837A56F4407F37</code> <code>573F6925B53D30F2BE53C659F00574B1</code> <code>5CE07636B99E2F399FB6526A873750D6</code> <code>E3B710EBF0F5EAF537E94021EBE204A0</code> <code>F7D3CDF6B33C0DC5625D6181945B429A</code> <code>B4DD45F76D9830382D4597C04A187707</code> <code>663252DCF9085A28739EC3677935AD98</code> <code>A3073EA3C660CEFF8679B8091064710C</code> <code>8D7DAF743B3DBDFF76F4A8CEE2AE117C</code> <code>FF8F55CAD22CE9AD537105B05ACA4549</code> <code>36CD42F940056CAA2137E0213FA54C5C</code> <code>B6E4171F438D0CCF00F83E43F401BC9A</code> <code>14E2CE339EE9404FBA31B6D9AAA94865</code> <code>25B3DEED66FA39D1EE0B209C755AE684</code> <code>5C70F0E362DEBACC283EF33050AAD3EA</code> <code>9C073B687E997B5651D578514351675C</code> <code>B4BE5BDC004272F0A93C79C0714C1DDE</code> <code>0896F4C73EA1C06E3EB360568768B571</code> <code>5AE0CBB00114E315229837C97B4E4C05</code> <code>E5188FD160D668608BF8E80FB2E4285B</code> <code>ED783C2CC7B9B06F97FF5FCAF835C19E</code> <code>A7DE2270B8507AE8B67C0882F8D7F225</code> <code>AED8FB26BD8A2F8487CC30944844A233</code> <code>A862BFAD7569D7062E106A2C16E46DD1</code> <code>AE00A4ADB9F95D08059D4A36FF72E00B</code> <code>9F14356667023419CC94EF62FEF67A62</code> <code>DB632870A2F7DBDB94DA7EDB7B504973</code> <code>09B64F8C45C829BED389DC15751C5B74</code> <code>F5744AF4037E2C864574927AC2E826C2</code> <code>20105FA54BB53B8E098D2700657F87E4</code> <code>AEAD2D28E1027E2C55BA96D58C9908E4</code> <code>7EF8C6CF8807AFB948A4A93EEC83D62B</code><br> <code>D5A64CE5</code></td>
|
|
|
|
|
<td><code>FE5002008718962F19E8C50E8F02F4C8</code> <code>1113941644C3A0C020E688EF01332B1F</code> <code>F0FC8E782E65B040EEECA939437C28AF</code> <code>61538459A0EA88D5918E9C3119823224</code> <code>D7FAC11BEB9C2DFDD7F79BBD8C3BD65D</code> <code>019DB3C32CB71DD75363563A4F26D930</code> <code>D2FB14249A1539317CAD40F658D8AC4F</code> <code>6BF3B613E7A581A42ED563257E411E74</code> <code>2D262935EC62C0636E41B2A474236A91</code> <code>0E084C31A0295FB84DBB55616C62617C</code> <code>4642FF1CAF13F72D3ED284015B798910</code> <code>C0AB3842B81E89197A128A2E38D7DCDC</code> <code>CA77DD7BE8F8C0DACC16700306065BFA</code> <code>DC0D39146BDAF690894D2CA7633D03AA</code> <code>6214CEFA1EAD86B1C472C00C296F29E1</code> <code>E437090BA32FC0F1E2525C3BFCC5CB7C</code> <code>49D7E7C3B97EB83C0BE14DB4E964C21F</code> <code>577361D99EA8542ABAD7C7DF7EDAE679</code> <code>00B1489F003AEC854E64956D25B827A3</code> <code>7B82603EDE42C9AA53E5B95DC902449F</code> <code>4164163F744F702A844410C6893BCD58</code> <code>92A08F438F374ED191D6CA4336D5CE0D</code> <code>7A8E4B72BB091A7B9D7E12CB9BEFEBDE</code> <code>8B3C3C916E36485FDB1F387436653C8B</code> <code>020A59D0D716251771AEB972DAE61DAC</code> <code>6DD196E8004DE19881A60665B2A8D3C4</code> <code>B5B3AE7CBE6FE765F5BF8E76C3102CDB</code> <code>35CCE67C6DB6AD9F748EB73F23E54B99</code> <code>93D68434B554872E1B1DE58EAA8204F7</code> <code>9E5303ADD7F321C4EB417BA0FFE7526B</code> <code>8671990C78E9CA80E299A60EEC361BF4</code> <code>CEFC09A53FB267B50245E6172C7D0C54</code> <code>DA7C058D485F56B890C5E288457C772C</code> <code>9A9353D120842541619A839B934C5800</code> <code>DD6BDD1036686420136E7A41F40EB4CB</code> <code>EDA0EA2141F8A447AA7258DF5E66AEDB</code> <code>A17BFA4CB3632B203F97E34890F5AFFE</code><br> <code>F80D16A8</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = E0E6960D4222BCEF97D292D36F8622288608D30E7A1D4B06D957A886C
|
|
|
|
|
<!-- 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 = 7B41FC63C45322E6F79E95DDF15D5A518D10C59E4AE39CEE9819D8A6FCE6126B3C850D213FF2491E213EECD9FCC22A29A813C48361E268CE887BE4D9718112B9F2E940396E244D559A477113148B81A426D448AF0C837A56F4407F37573F6925B53D30F2BE53C659F00574B15CE07636B99E2F399FB6526A873750D6E3B710EBF0F5EAF537E94021EBE204A0F7D3CDF6B33C0DC5625D6181945B429AB4DD45F76D9830382D4597C04A187707663252DCF9085A28739EC3677935AD98A3073EA3C660CEFF8679B8091064710C8D7DAF743B3DBDFF76F4A8CEE2AE117CFF8F55CAD22CE9AD537105B05ACA454936CD42F940056CAA2137E0213FA54C5CB6E4171F438D0CCF00F83E43F401BC9A14E2CE339EE9404FBA31B6D9AAA9486525B3DEED66FA39D1EE0B209C755AE6845C70F0E362DEBACC283EF33050AAD3EA9C073B687E997B5651D578514351675CB4BE5BDC004272F0A93C79C0714C1DDE0896F4C73EA1C06E3EB360568768B5715AE0CBB00114E315229837C97B4E4C05E5188FD160D668608BF8E80FB2E4285BED783C2CC7B9B06F97FF5FCAF835C19EA7DE2270B8507AE8B67C0882F8D7F225AED8FB26BD8A2F8487CC30944844A233A862BFAD7569D7062E106A2C16E46DD1AE00A4ADB9F95D08059D4A36FF72E00B9F14356667023419CC94EF62FEF67A62DB632870A2F7DBDB94DA7EDB7B50497309B64F8C45C829BED389DC15751C5B74F5744AF4037E2C864574927AC2E826C220105FA54BB53B8E098D2700657F87E4AEAD2D28E1027E2C55BA96D58C9908E47EF8C6CF8807AFB948A4A93EEC83D62BD5A64CE5
|
|
|
|
|
tmp_aes_key = 34C318401DAA7296D030099E9F57F7F8B03B16925E13FB160FCDC365745A8D19
|
|
|
|
|
tmp_aes_iv = 1501B913132C168D87A718F7BF4CF8BE1316F8A7D29B327F2A677C8B4CE54E26</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = 8718962F19E8C50E8F02F4C81113941644C3A0C020E688EF01332B1FF0FC8E782E65B040EEECA939437C28AF61538459A0EA88D5918E9C3119823224D7FAC11BEB9C2DFDD7F79BBD8C3BD65D019DB3C32CB71DD75363563A4F26D930D2FB14249A1539317CAD40F658D8AC4F6BF3B613E7A581A42ED563257E411E742D262935EC62C0636E41B2A474236A910E084C31A0295FB84DBB55616C62617C4642FF1CAF13F72D3ED284015B798910C0AB3842B81E89197A128A2E38D7DCDCCA77DD7BE8F8C0DACC16700306065BFADC0D39146BDAF690894D2CA7633D03AA6214CEFA1EAD86B1C472C00C296F29E1E437090BA32FC0F1E2525C3BFCC5CB7C49D7E7C3B97EB83C0BE14DB4E964C21F577361D99EA8542ABAD7C7DF7EDAE67900B1489F003AEC854E64956D25B827A37B82603EDE42C9AA53E5B95DC902449F4164163F744F702A844410C6893BCD5892A08F438F374ED191D6CA4336D5CE0D7A8E4B72BB091A7B9D7E12CB9BEFEBDE8B3C3C916E36485FDB1F387436653C8B020A59D0D716251771AEB972DAE61DAC6DD196E8004DE19881A60665B2A8D3C4B5B3AE7CBE6FE765F5BF8E76C3102CDB35CCE67C6DB6AD9F748EB73F23E54B9993D68434B554872E1B1DE58EAA8204F79E5303ADD7F321C4EB417BA0FFE7526B8671990C78E9CA80E299A60EEC361BF4CEFC09A53FB267B50245E6172C7D0C54DA7C058D485F56B890C5E288457C772C9A9353D120842541619A839B934C5800DD6BDD1036686420136E7A41F40EB4CBEDA0EA2141F8A447AA7258DF5E66AEDBA17BFA4CB3632B203F97E34890F5AFFEF80D16A8
|
|
|
|
|
tmp_aes_key = E884ECA5A3A80A4451E09DB16C113E0A54B017D2F6874D12663BFB244AEBAC52
|
|
|
|
|
tmp_aes_iv = AF3C79E1BA5B26D2DB54C0BEAFCCDDEF9590FB2913DE2F08E91CA3DC2F73F31C</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 5988D46C5741CE243FDF9797FCC92D0812929AD6BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100740EB2D446DB0C8B918F656DFA9088CD79537C4805011180956C8E56046939A3343169511F5D96DEF10124A2C60AD1841B1A967702F0EF82CC9F03182E473F7E0FEE85441F9E9EEDA84FAF189F70ADDBF543E56FDFB8A42ED6662570B47EECB35E68BD88FAF0AFF1EC8A882B67CA7EE2C2DCE5D6E1AD3AEC2C6D6A7E48C05F93920675C8D155F73F0DC938BDA535B83B67284862991F8F383E797D15C3E69FBA83A25400994C44B28057E93745B4A6E333553D34C3D2268EDBD5F767D13F7E9830292213B7CD83AF7184476E7571CD4C48B1CF81C7114EE4604AA031941F72D6D428280FBC8C235D0E548C82110ADB6E605461809E94ACA098A42ED1F4E9E6079D5A99667510C2D577FE81E7
|
|
|
|
|
answer = BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100740EB2D446DB0C8B918F656DFA9088CD79537C4805011180956C8E56046939A3343169511F5D96DEF10124A2C60AD1841B1A967702F0EF82CC9F03182E473F7E0FEE85441F9E9EEDA84FAF189F70ADDBF543E56FDFB8A42ED6662570B47EECB35E68BD88FAF0AFF1EC8A882B67CA7EE2C2DCE5D6E1AD3AEC2C6D6A7E48C05F93920675C8D155F73F0DC938BDA535B83B67284862991F8F383E797D15C3E69FBA83A25400994C44B28057E93745B4A6E333553D34C3D2268EDBD5F767D13F7E9830292213B7CD83AF7184476E7571CD4C48B1CF81C7114EE4604AA031941F72D6D428280FBC8C235D0E548C82110ADB6E605461809E94ACA098A42ED1F4E9E6079D5A99667510C2D577FE81E7</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 4334510DF25EAC58197E72C3C8A91D8FD7A899C2BA0D89B58711D2E9BDE203D771A6F8F0E383493ABFC418CEE6294111191F18979B20FEA203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100762579F34411A73C76B478E1D58516AC27A36342134AB279A0374CB0DFE056A0A883B9A16FC6ADCF31C202B26D062FDCDAD0CE0F2D759F088150ED19C3D83C2AC69B0730D87C0E21F097B677F65AB8BC2AA5E20F7D27A0D2C70F26A397E752F0F81AC13B9C7898A6A24562C5E38E74AF497DB5346FD98510D2505C3CB15D894D38097566C89AB004EE43B27643B26B3131E7CEEC8F67CFE688B526713C0961822E6CCDC4DC15899CAA94A05B874F97CA2240074A2F794272C7C45986251359709B9EBDBA8240A8FCF0265F9C85FB30586B5549EF6A0D02A7A330B30C2873DD8BE6E4C77BC2CE06D08F60B6E442DB92CF15821CDC064F2BCE8F937FBC499F1EEF3C0F9D661E94A7058B014DB2
|
|
|
|
|
answer = BA0D89B58711D2E9BDE203D771A6F8F0E383493ABFC418CEE6294111191F18979B20FEA203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100762579F34411A73C76B478E1D58516AC27A36342134AB279A0374CB0DFE056A0A883B9A16FC6ADCF31C202B26D062FDCDAD0CE0F2D759F088150ED19C3D83C2AC69B0730D87C0E21F097B677F65AB8BC2AA5E20F7D27A0D2C70F26A397E752F0F81AC13B9C7898A6A24562C5E38E74AF497DB5346FD98510D2505C3CB15D894D38097566C89AB004EE43B27643B26B3131E7CEEC8F67CFE688B526713C0961822E6CCDC4DC15899CAA94A05B874F97CA2240074A2F794272C7C45986251359709B9EBDBA8240A8FCF0265F9C85FB30586B5549EF6A0D02A7A330B30C2873DD8BE6E4C77BC2CE06D08F60B6E442DB92CF15821CDC064F2BCE8F937FBC499F1EEF3C0F9D661E94A7058B014DB2</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 50 78 49 F0 BB 9C 45 7D BC E9 A3 22
|
|
|
|
|
0010 | DE EC 98 B7 4C A9 67 F1 E6 C7 3D 67 7B 05 7D BF
|
|
|
|
|
0020 | 78 DF F1 D3 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 87 11 D2 E9 BD E2 03 D7 71 A6 F8 F0
|
|
|
|
|
0010 | E3 83 49 3A BF C4 18 CE E6 29 41 11 19 1F 18 97
|
|
|
|
|
0020 | 9B 20 FE A2 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 = BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D
|
|
|
|
|
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 | 74 0E B2 D4 46 DB 0C 8B 91 8F 65 6D FA 90 88 CD
|
|
|
|
|
0140 | 79 53 7C 48 05 01 11 80 95 6C 8E 56 04 69 39 A3
|
|
|
|
|
0150 | 34 31 69 51 1F 5D 96 DE F1 01 24 A2 C6 0A D1 84
|
|
|
|
|
0160 | 1B 1A 96 77 02 F0 EF 82 CC 9F 03 18 2E 47 3F 7E
|
|
|
|
|
0170 | 0F EE 85 44 1F 9E 9E ED A8 4F AF 18 9F 70 AD DB
|
|
|
|
|
0180 | F5 43 E5 6F DF B8 A4 2E D6 66 25 70 B4 7E EC B3
|
|
|
|
|
0190 | 5E 68 BD 88 FA F0 AF F1 EC 8A 88 2B 67 CA 7E E2
|
|
|
|
|
01A0 | C2 DC E5 D6 E1 AD 3A EC 2C 6D 6A 7E 48 C0 5F 93
|
|
|
|
|
01B0 | 92 06 75 C8 D1 55 F7 3F 0D C9 38 BD A5 35 B8 3B
|
|
|
|
|
01C0 | 67 28 48 62 99 1F 8F 38 3E 79 7D 15 C3 E6 9F BA
|
|
|
|
|
01D0 | 83 A2 54 00 99 4C 44 B2 80 57 E9 37 45 B4 A6 E3
|
|
|
|
|
01E0 | 33 55 3D 34 C3 D2 26 8E DB D5 F7 67 D1 3F 7E 98
|
|
|
|
|
01F0 | 30 29 22 13 B7 CD 83 AF 71 84 47 6E 75 71 CD 4C
|
|
|
|
|
0200 | 48 B1 CF 81 C7 11 4E E4 60 4A A0 31 94 1F 72 D6
|
|
|
|
|
0210 | D4 28 28 0F BC 8C 23 5D 0E 54 8C 82 11 0A DB 6E
|
|
|
|
|
0220 | 60 54 61 80 9E 94 AC A0 98 A4 2E D1 F4 E9 E6 07
|
|
|
|
|
0230 | 9D 5A 99 66</code></pre>
|
|
|
|
|
0130 | 76 25 79 F3 44 11 A7 3C 76 B4 78 E1 D5 85 16 AC
|
|
|
|
|
0140 | 27 A3 63 42 13 4A B2 79 A0 37 4C B0 DF E0 56 A0
|
|
|
|
|
0150 | A8 83 B9 A1 6F C6 AD CF 31 C2 02 B2 6D 06 2F DC
|
|
|
|
|
0160 | DA D0 CE 0F 2D 75 9F 08 81 50 ED 19 C3 D8 3C 2A
|
|
|
|
|
0170 | C6 9B 07 30 D8 7C 0E 21 F0 97 B6 77 F6 5A B8 BC
|
|
|
|
|
0180 | 2A A5 E2 0F 7D 27 A0 D2 C7 0F 26 A3 97 E7 52 F0
|
|
|
|
|
0190 | F8 1A C1 3B 9C 78 98 A6 A2 45 62 C5 E3 8E 74 AF
|
|
|
|
|
01A0 | 49 7D B5 34 6F D9 85 10 D2 50 5C 3C B1 5D 89 4D
|
|
|
|
|
01B0 | 38 09 75 66 C8 9A B0 04 EE 43 B2 76 43 B2 6B 31
|
|
|
|
|
01C0 | 31 E7 CE EC 8F 67 CF E6 88 B5 26 71 3C 09 61 82
|
|
|
|
|
01D0 | 2E 6C CD C4 DC 15 89 9C AA 94 A0 5B 87 4F 97 CA
|
|
|
|
|
01E0 | 22 40 07 4A 2F 79 42 72 C7 C4 59 86 25 13 59 70
|
|
|
|
|
01F0 | 9B 9E BD BA 82 40 A8 FC F0 26 5F 9C 85 FB 30 58
|
|
|
|
|
0200 | 6B 55 49 EF 6A 0D 02 A7 A3 30 B3 0C 28 73 DD 8B
|
|
|
|
|
0210 | E6 E4 C7 7B C2 CE 06 D0 8F 60 B6 E4 42 DB 92 CF
|
|
|
|
|
0220 | 15 82 1C DC 06 4F 2B CE 8F 93 7F BC 49 9F 1E EF
|
|
|
|
|
0230 | 3C 0F 9D 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 = BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE000100740EB2D446DB0C8B918F656D</code> <code>FA9088CD79537C4805011180956C8E56</code> <code>046939A3343169511F5D96DEF10124A2</code> <code>C60AD1841B1A967702F0EF82CC9F0318</code> <code>2E473F7E0FEE85441F9E9EEDA84FAF18</code> <code>9F70ADDBF543E56FDFB8A42ED6662570</code> <code>B47EECB35E68BD88FAF0AFF1EC8A882B</code> <code>67CA7EE2C2DCE5D6E1AD3AEC2C6D6A7E</code> <code>48C05F93920675C8D155F73F0DC938BD</code> <code>A535B83B67284862991F8F383E797D15</code> <code>C3E69FBA83A25400994C44B28057E937</code> <code>45B4A6E333553D34C3D2268EDBD5F767</code> <code>D13F7E9830292213B7CD83AF7184476E</code> <code>7571CD4C48B1CF81C7114EE4604AA031</code> <code>941F72D6D428280FBC8C235D0E548C82</code> <code>110ADB6E605461809E94ACA098A42ED1</code><br> <code>F4E9E607</code></td>
|
|
|
|
|
<td><code>FE000100762579F34411A73C76B478E1</code> <code>D58516AC27A36342134AB279A0374CB0</code> <code>DFE056A0A883B9A16FC6ADCF31C202B2</code> <code>6D062FDCDAD0CE0F2D759F088150ED19</code> <code>C3D83C2AC69B0730D87C0E21F097B677</code> <code>F65AB8BC2AA5E20F7D27A0D2C70F26A3</code> <code>97E752F0F81AC13B9C7898A6A24562C5</code> <code>E38E74AF497DB5346FD98510D2505C3C</code> <code>B15D894D38097566C89AB004EE43B276</code> <code>43B26B3131E7CEEC8F67CFE688B52671</code> <code>3C0961822E6CCDC4DC15899CAA94A05B</code> <code>874F97CA2240074A2F794272C7C45986</code> <code>251359709B9EBDBA8240A8FCF0265F9C</code> <code>85FB30586B5549EF6A0D02A7A330B30C</code> <code>2873DD8BE6E4C77BC2CE06D08F60B6E4</code> <code>42DB92CF15821CDC064F2BCE8F937FBC</code><br> <code>499F1EEF</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>9D5A9966</code> (1721326237 in decimal)</td>
|
|
|
|
|
<td><code>3C0F9D66</code> (1721569084 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D
|
|
|
|
|
<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 = 85A6515BC71C9F21D4D92EFACBF3187555F69890CFFB924A8EC9FE9EB43A6BAE52A5F0D44ADA55935222DEE1B69FFA07806EF6789A6200211E2BF147FDB4FED89F1C6DDADD9ED9388E9881445EFEE7739C7B5577BB058AB556179AAF9795B06995BB25AC8A82D14A7752B82D33F609878CDFB85677C449E5809EB2F494C9157E941AC4CE165DBCC64E89EBC24F8D4CDB28A7E0A901F0448682CC067E54C0273AC5643005C99FCCD1BC9F32777150C3E749373A7C7832DF3E5C767C8B147AF7C46AC99C2F1667443C7F4327E00A0C94925F1BB6626878DD8BBFA4DE613FD8A16D910DFA2F99A3A6A086F238CFB862B22843BFE8AB973602F66728CC554BB631A0</code></pre>
|
|
|
|
|
<pre><code>b = FE943BE5958D2003C90493AAC4D652B637C9DE3B54DCA5303BADAB08DA485B66AD01818264CB5CD6B950FB2A77602C42078DEE77BC5E9D4F5A01288430E258445A4515CF3006B68010DD5C7CC8E001FAF107B60749A8D50B080DC51B89E6DFA168019C97FA4C9B8158395BCCC3A39F7902CF9E6F46935F89E3F179FC229AB47908DEEA796B45341E1C201AB04A98D6C957C5ADA0A100CE0EE536B8097B2632F16A4D70A3EB68A7B0C19A80F1BB502CC7D1E486BA0D5C4296E5AE18C49ADCB791D2FB84200ADEE843BE70104DF10F5B946BC67D499BB309512E43BB5D55F78A91A447A96D197391E8C633E42DBF0BBB92CB67BF5D10FBECB8FA1758BC63437C41</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 = A218EDB5E0B4A672DA510DB70D51543BFB4336937F7F3A93E4A33DF7D9F83CAF1AA60FB951B4CD007D6A1AF83E29373EE6BE98A783624047847B22E59EBC320E9EBFDEF2348EE6EE2819231381AA1E2A3E6C513CFB26629AE5B6E36ED9865CC4F1D5210F2D84E1958DFD16CF08778C503BBA7D4429F092C2F56DAFDF6F49D5A3DEE7E0B1112E793E0BD24EB9CFFD50238000161F56765C24A4D3CB9ECD3A1D1094949020EC96043F42E1053B94796F2DD09C6A228D626433E5CC8771A04328D10B43A4BA6FB8EFE0C5736440A31E2ED56DB8FEF7237F444E04D4DDA8BD50392B9E7F42E57C01D9923AB57E10BE2BBB85F43597AC41D6D6C235DC1F92193EAD62</code></pre>
|
|
|
|
|
<pre><code>g_b = 0FC0C6EE1C38008117118A821727F2F6D9AF8C494C35E09D221B57DB80CD1BE98116F7120E3E6D946DCABD8B9C0BE1D2575A7FC5A65F7B1FDB696840C80222E9A81BF59C631CEE024977C46D4C2BC97CFB262469D89D5EDEE6F38A83BB0565B48DD96AFD72967525193CB0267B00A0941E6036168DF293DB8608400F3D59669F62FF04210452FAB6BB44BD835EECEA291A0F61B4B96CF8FF7353B0FC6ADA52BEADFDCCAAD5E83710D75A605C622151E406B1F7C9A83E46CA2F7893AA8FE5046F5D89922A568550F687A44964E5E9BF360EFBF09548996ED1088B6D16A2A2B570FC51C4DE2FEA098005C88FDED2184EE7F1EB42D7BF5BB9B4BB0959D9922E08B2</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 50 78 49 F0 BB 9C 45 7D BC E9 A3 22
|
|
|
|
|
0010 | DE EC 98 B7 4C A9 67 F1 E6 C7 3D 67 7B 05 7D BF
|
|
|
|
|
0020 | 78 DF F1 D3 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | A2 18 ED B5 E0 B4 A6 72 DA 51 0D B7 0D 51 54 3B
|
|
|
|
|
0040 | FB 43 36 93 7F 7F 3A 93 E4 A3 3D F7 D9 F8 3C AF
|
|
|
|
|
0050 | 1A A6 0F B9 51 B4 CD 00 7D 6A 1A F8 3E 29 37 3E
|
|
|
|
|
0060 | E6 BE 98 A7 83 62 40 47 84 7B 22 E5 9E BC 32 0E
|
|
|
|
|
0070 | 9E BF DE F2 34 8E E6 EE 28 19 23 13 81 AA 1E 2A
|
|
|
|
|
0080 | 3E 6C 51 3C FB 26 62 9A E5 B6 E3 6E D9 86 5C C4
|
|
|
|
|
0090 | F1 D5 21 0F 2D 84 E1 95 8D FD 16 CF 08 77 8C 50
|
|
|
|
|
00A0 | 3B BA 7D 44 29 F0 92 C2 F5 6D AF DF 6F 49 D5 A3
|
|
|
|
|
00B0 | DE E7 E0 B1 11 2E 79 3E 0B D2 4E B9 CF FD 50 23
|
|
|
|
|
00C0 | 80 00 16 1F 56 76 5C 24 A4 D3 CB 9E CD 3A 1D 10
|
|
|
|
|
00D0 | 94 94 90 20 EC 96 04 3F 42 E1 05 3B 94 79 6F 2D
|
|
|
|
|
00E0 | D0 9C 6A 22 8D 62 64 33 E5 CC 87 71 A0 43 28 D1
|
|
|
|
|
00F0 | 0B 43 A4 BA 6F B8 EF E0 C5 73 64 40 A3 1E 2E D5
|
|
|
|
|
0100 | 6D B8 FE F7 23 7F 44 4E 04 D4 DD A8 BD 50 39 2B
|
|
|
|
|
0110 | 9E 7F 42 E5 7C 01 D9 92 3A B5 7E 10 BE 2B BB 85
|
|
|
|
|
0120 | F4 35 97 AC 41 D6 D6 C2 35 DC 1F 92 19 3E AD 62</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 87 11 D2 E9 BD E2 03 D7 71 A6 F8 F0
|
|
|
|
|
0010 | E3 83 49 3A BF C4 18 CE E6 29 41 11 19 1F 18 97
|
|
|
|
|
0020 | 9B 20 FE A2 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 0F C0 C6 EE 1C 38 00 81 17 11 8A 82 17 27 F2 F6
|
|
|
|
|
0040 | D9 AF 8C 49 4C 35 E0 9D 22 1B 57 DB 80 CD 1B E9
|
|
|
|
|
0050 | 81 16 F7 12 0E 3E 6D 94 6D CA BD 8B 9C 0B E1 D2
|
|
|
|
|
0060 | 57 5A 7F C5 A6 5F 7B 1F DB 69 68 40 C8 02 22 E9
|
|
|
|
|
0070 | A8 1B F5 9C 63 1C EE 02 49 77 C4 6D 4C 2B C9 7C
|
|
|
|
|
0080 | FB 26 24 69 D8 9D 5E DE E6 F3 8A 83 BB 05 65 B4
|
|
|
|
|
0090 | 8D D9 6A FD 72 96 75 25 19 3C B0 26 7B 00 A0 94
|
|
|
|
|
00A0 | 1E 60 36 16 8D F2 93 DB 86 08 40 0F 3D 59 66 9F
|
|
|
|
|
00B0 | 62 FF 04 21 04 52 FA B6 BB 44 BD 83 5E EC EA 29
|
|
|
|
|
00C0 | 1A 0F 61 B4 B9 6C F8 FF 73 53 B0 FC 6A DA 52 BE
|
|
|
|
|
00D0 | AD FD CC AA D5 E8 37 10 D7 5A 60 5C 62 21 51 E4
|
|
|
|
|
00E0 | 06 B1 F7 C9 A8 3E 46 CA 2F 78 93 AA 8F E5 04 6F
|
|
|
|
|
00F0 | 5D 89 92 2A 56 85 50 F6 87 A4 49 64 E5 E9 BF 36
|
|
|
|
|
0100 | 0E FB F0 95 48 99 6E D1 08 8B 6D 16 A2 A2 B5 70
|
|
|
|
|
0110 | FC 51 C4 DE 2F EA 09 80 05 C8 8F DE D2 18 4E E7
|
|
|
|
|
0120 | F1 EB 42 D7 BF 5B B9 B4 BB 09 59 D9 92 2E 08 B2</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 = BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE000100A218EDB5E0B4A672DA510DB7</code> <code>0D51543BFB4336937F7F3A93E4A33DF7</code> <code>D9F83CAF1AA60FB951B4CD007D6A1AF8</code> <code>3E29373EE6BE98A783624047847B22E5</code> <code>9EBC320E9EBFDEF2348EE6EE28192313</code> <code>81AA1E2A3E6C513CFB26629AE5B6E36E</code> <code>D9865CC4F1D5210F2D84E1958DFD16CF</code> <code>08778C503BBA7D4429F092C2F56DAFDF</code> <code>6F49D5A3DEE7E0B1112E793E0BD24EB9</code> <code>CFFD50238000161F56765C24A4D3CB9E</code> <code>CD3A1D1094949020EC96043F42E1053B</code> <code>94796F2DD09C6A228D626433E5CC8771</code> <code>A04328D10B43A4BA6FB8EFE0C5736440</code> <code>A31E2ED56DB8FEF7237F444E04D4DDA8</code> <code>BD50392B9E7F42E57C01D9923AB57E10</code> <code>BE2BBB85F43597AC41D6D6C235DC1F92</code><br> <code>193EAD62</code></td>
|
|
|
|
|
<td><code>FE0001000FC0C6EE1C38008117118A82</code> <code>1727F2F6D9AF8C494C35E09D221B57DB</code> <code>80CD1BE98116F7120E3E6D946DCABD8B</code> <code>9C0BE1D2575A7FC5A65F7B1FDB696840</code> <code>C80222E9A81BF59C631CEE024977C46D</code> <code>4C2BC97CFB262469D89D5EDEE6F38A83</code> <code>BB0565B48DD96AFD72967525193CB026</code> <code>7B00A0941E6036168DF293DB8608400F</code> <code>3D59669F62FF04210452FAB6BB44BD83</code> <code>5EECEA291A0F61B4B96CF8FF7353B0FC</code> <code>6ADA52BEADFDCCAAD5E83710D75A605C</code> <code>622151E406B1F7C9A83E46CA2F7893AA</code> <code>8FE5046F5D89922A568550F687A44964</code> <code>E5E9BF360EFBF09548996ED1088B6D16</code> <code>A2A2B570FC51C4DE2FEA098005C88FDE</code> <code>D2184EE7F1EB42D7BF5BB9B4BB0959D9</code><br> <code>922E08B2</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 = BA0D89B5507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D
|
|
|
|
|
<!-- 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 = 54B64366507849F0BB9C457DBCE9A322DEEC98B74CA967F1E6C73D677B057DBF78DFF1D30000000000000000FE000100A218EDB5E0B4A672DA510DB70D51543BFB4336937F7F3A93E4A33DF7D9F83CAF1AA60FB951B4CD007D6A1AF83E29373EE6BE98A783624047847B22E59EBC320E9EBFDEF2348EE6EE2819231381AA1E2A3E6C513CFB26629AE5B6E36ED9865CC4F1D5210F2D84E1958DFD16CF08778C503BBA7D4429F092C2F56DAFDF6F49D5A3DEE7E0B1112E793E0BD24EB9CFFD50238000161F56765C24A4D3CB9ECD3A1D1094949020EC96043F42E1053B94796F2DD09C6A228D626433E5CC8771A04328D10B43A4BA6FB8EFE0C5736440A31E2ED56DB8FEF7237F444E04D4DDA8BD50392B9E7F42E57C01D9923AB57E10BE2BBB85F43597AC41D6D6C235DC1F92193EAD62
|
|
|
|
|
padding = 1F29A22D47380EE8EC009236
|
|
|
|
|
tmp_aes_key = 34C318401DAA7296D030099E9F57F7F8B03B16925E13FB160FCDC365745A8D19
|
|
|
|
|
tmp_aes_iv = 1501B913132C168D87A718F7BF4CF8BE1316F8A7D29B327F2A677C8B4CE54E26</code></pre>
|
|
|
|
|
<pre><code>data = 54B643668711D2E9BDE203D771A6F8F0E383493ABFC418CEE6294111191F18979B20FEA20000000000000000FE0001000FC0C6EE1C38008117118A821727F2F6D9AF8C494C35E09D221B57DB80CD1BE98116F7120E3E6D946DCABD8B9C0BE1D2575A7FC5A65F7B1FDB696840C80222E9A81BF59C631CEE024977C46D4C2BC97CFB262469D89D5EDEE6F38A83BB0565B48DD96AFD72967525193CB0267B00A0941E6036168DF293DB8608400F3D59669F62FF04210452FAB6BB44BD835EECEA291A0F61B4B96CF8FF7353B0FC6ADA52BEADFDCCAAD5E83710D75A605C622151E406B1F7C9A83E46CA2F7893AA8FE5046F5D89922A568550F687A44964E5E9BF360EFBF09548996ED1088B6D16A2A2B570FC51C4DE2FEA098005C88FDED2184EE7F1EB42D7BF5BB9B4BB0959D9922E08B2
|
|
|
|
|
padding = 28101732D58AF97749FA052D
|
|
|
|
|
tmp_aes_key = E884ECA5A3A80A4451E09DB16C113E0A54B017D2F6874D12663BFB244AEBAC52
|
|
|
|
|
tmp_aes_iv = AF3C79E1BA5B26D2DB54C0BEAFCCDDEF9590FB2913DE2F08E91CA3DC2F73F31C</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 = 1A2DA766289FE5F8AAA5FC92F3363EB80499B19D5A3F6908C780B6E066484BCC1E822A4C43E0E73A2EE134E10BE74F3217B5C9AA2A52BCA1D4C4629CE88298BCC274575D3C1F4A79D020509BEE26AC3C26CDB95AA96F863C4DF65C5C50C20676CE1AB6294220AEB2B267F824B3CE7B1092BCB21047B2C4DF6ACB47CAE363362E25707FF5D1755ACEE08FE4035414BA8B82948AB7FB34CDB9AEABD7C229A004B9B3ACB624C5F1224B7B357127E9C982554B3408558A30D207BA91A7C80230EF9BE4272935B264F9BC72877CA3A06EDD46807AE0D72B4D129AF13352EC925D7ACAF9126AA12C8AD65A1BAE16AE6D79A899E8E5D6E3FB9A09A8E3AEEE2D180531EDB7082CC3451333F00012611C1330418E1B41EC83822E766886F3CE667E51B697BD15FFF64338F33B9738FB58C0CE553E4BE0FA87505B380D3FBBC1337EECAD6F3C89065E86F659DE8560A6F1436A765C</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 8B0A4C80B2BE1E6092DC58FE56EDFBAA53E6AE22E6A0494D0E3C2295351F05DBD24389BFE4E6B7FED4E37D0F103D9F82CD1CF7255A59277B523FA398A9B12A3CC66F0C583147243E3DE3293D8573DC2C25DC47AB87FE396AD0D5F1A6797AEB3DB8B39451C21544C22CCB4EAC8F11AAC1C13C03921D2F216CF6DE47E2865C67BBBD9EACA5FA055D511522424B450121363F84A508C5A07322C777D057BEF02238EFE6C1BCE7AD6973F3326DF28FD3845F9AFD4A73F752EC0F54CA5EA3ADBB418292846A3E0E183B662481C27A76F2F5BF8F66ED3C2DC558F8D6F034B9F3038314738CB6A09125437D40874E0A976AA9A5FBB89BD49D725FD4F9173B2048519C7788696E1B6997E86A6F4180A490F0B74B2862DFDFF65D273EBC6F8F889AD62CEE4E23A8AF58C8B20DCB0973216B17D5AC2E1A9FDD8D9329D76D7F72575525DD542339265EC5CCCCDC8B7D1611F5FB2BBE</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 D4 99 0A 00 9D 5A 99 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 50 78 49 F0 BB 9C 45 7D
|
|
|
|
|
0020 | BC E9 A3 22 DE EC 98 B7 4C A9 67 F1 E6 C7 3D 67
|
|
|
|
|
0030 | 7B 05 7D BF 78 DF F1 D3 FE 50 01 00 1A 2D A7 66
|
|
|
|
|
0040 | 28 9F E5 F8 AA A5 FC 92 F3 36 3E B8 04 99 B1 9D
|
|
|
|
|
0050 | 5A 3F 69 08 C7 80 B6 E0 66 48 4B CC 1E 82 2A 4C
|
|
|
|
|
0060 | 43 E0 E7 3A 2E E1 34 E1 0B E7 4F 32 17 B5 C9 AA
|
|
|
|
|
0070 | 2A 52 BC A1 D4 C4 62 9C E8 82 98 BC C2 74 57 5D
|
|
|
|
|
0080 | 3C 1F 4A 79 D0 20 50 9B EE 26 AC 3C 26 CD B9 5A
|
|
|
|
|
0090 | A9 6F 86 3C 4D F6 5C 5C 50 C2 06 76 CE 1A B6 29
|
|
|
|
|
00A0 | 42 20 AE B2 B2 67 F8 24 B3 CE 7B 10 92 BC B2 10
|
|
|
|
|
00B0 | 47 B2 C4 DF 6A CB 47 CA E3 63 36 2E 25 70 7F F5
|
|
|
|
|
00C0 | D1 75 5A CE E0 8F E4 03 54 14 BA 8B 82 94 8A B7
|
|
|
|
|
00D0 | FB 34 CD B9 AE AB D7 C2 29 A0 04 B9 B3 AC B6 24
|
|
|
|
|
00E0 | C5 F1 22 4B 7B 35 71 27 E9 C9 82 55 4B 34 08 55
|
|
|
|
|
00F0 | 8A 30 D2 07 BA 91 A7 C8 02 30 EF 9B E4 27 29 35
|
|
|
|
|
0100 | B2 64 F9 BC 72 87 7C A3 A0 6E DD 46 80 7A E0 D7
|
|
|
|
|
0110 | 2B 4D 12 9A F1 33 52 EC 92 5D 7A CA F9 12 6A A1
|
|
|
|
|
0120 | 2C 8A D6 5A 1B AE 16 AE 6D 79 A8 99 E8 E5 D6 E3
|
|
|
|
|
0130 | FB 9A 09 A8 E3 AE EE 2D 18 05 31 ED B7 08 2C C3
|
|
|
|
|
0140 | 45 13 33 F0 00 12 61 1C 13 30 41 8E 1B 41 EC 83
|
|
|
|
|
0150 | 82 2E 76 68 86 F3 CE 66 7E 51 B6 97 BD 15 FF F6
|
|
|
|
|
0160 | 43 38 F3 3B 97 38 FB 58 C0 CE 55 3E 4B E0 FA 87
|
|
|
|
|
0170 | 50 5B 38 0D 3F BB C1 33 7E EC AD 6F 3C 89 06 5E
|
|
|
|
|
0180 | 86 F6 59 DE 85 60 A6 F1 43 6A 76 5C</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 F4 74 00 00 3D 0F 9D 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 87 11 D2 E9 BD E2 03 D7
|
|
|
|
|
0020 | 71 A6 F8 F0 E3 83 49 3A BF C4 18 CE E6 29 41 11
|
|
|
|
|
0030 | 19 1F 18 97 9B 20 FE A2 FE 50 01 00 8B 0A 4C 80
|
|
|
|
|
0040 | B2 BE 1E 60 92 DC 58 FE 56 ED FB AA 53 E6 AE 22
|
|
|
|
|
0050 | E6 A0 49 4D 0E 3C 22 95 35 1F 05 DB D2 43 89 BF
|
|
|
|
|
0060 | E4 E6 B7 FE D4 E3 7D 0F 10 3D 9F 82 CD 1C F7 25
|
|
|
|
|
0070 | 5A 59 27 7B 52 3F A3 98 A9 B1 2A 3C C6 6F 0C 58
|
|
|
|
|
0080 | 31 47 24 3E 3D E3 29 3D 85 73 DC 2C 25 DC 47 AB
|
|
|
|
|
0090 | 87 FE 39 6A D0 D5 F1 A6 79 7A EB 3D B8 B3 94 51
|
|
|
|
|
00A0 | C2 15 44 C2 2C CB 4E AC 8F 11 AA C1 C1 3C 03 92
|
|
|
|
|
00B0 | 1D 2F 21 6C F6 DE 47 E2 86 5C 67 BB BD 9E AC A5
|
|
|
|
|
00C0 | FA 05 5D 51 15 22 42 4B 45 01 21 36 3F 84 A5 08
|
|
|
|
|
00D0 | C5 A0 73 22 C7 77 D0 57 BE F0 22 38 EF E6 C1 BC
|
|
|
|
|
00E0 | E7 AD 69 73 F3 32 6D F2 8F D3 84 5F 9A FD 4A 73
|
|
|
|
|
00F0 | F7 52 EC 0F 54 CA 5E A3 AD BB 41 82 92 84 6A 3E
|
|
|
|
|
0100 | 0E 18 3B 66 24 81 C2 7A 76 F2 F5 BF 8F 66 ED 3C
|
|
|
|
|
0110 | 2D C5 58 F8 D6 F0 34 B9 F3 03 83 14 73 8C B6 A0
|
|
|
|
|
0120 | 91 25 43 7D 40 87 4E 0A 97 6A A9 A5 FB B8 9B D4
|
|
|
|
|
0130 | 9D 72 5F D4 F9 17 3B 20 48 51 9C 77 88 69 6E 1B
|
|
|
|
|
0140 | 69 97 E8 6A 6F 41 80 A4 90 F0 B7 4B 28 62 DF DF
|
|
|
|
|
0150 | F6 5D 27 3E BC 6F 8F 88 9A D6 2C EE 4E 23 A8 AF
|
|
|
|
|
0160 | 58 C8 B2 0D CB 09 73 21 6B 17 D5 AC 2E 1A 9F DD
|
|
|
|
|
0170 | 8D 93 29 D7 6D 7F 72 57 55 25 DD 54 23 39 26 5E
|
|
|
|
|
0180 | C5 CC CC DC 8B 7D 16 11 F5 FB 2B BE</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>D4990A009D5A9966</code></td>
|
|
|
|
|
<td><code>F47400003D0F9D66</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>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE5001001A2DA766289FE5F8AAA5FC92</code> <code>F3363EB80499B19D5A3F6908C780B6E0</code> <code>66484BCC1E822A4C43E0E73A2EE134E1</code> <code>0BE74F3217B5C9AA2A52BCA1D4C4629C</code> <code>E88298BCC274575D3C1F4A79D020509B</code> <code>EE26AC3C26CDB95AA96F863C4DF65C5C</code> <code>50C20676CE1AB6294220AEB2B267F824</code> <code>B3CE7B1092BCB21047B2C4DF6ACB47CA</code> <code>E363362E25707FF5D1755ACEE08FE403</code> <code>5414BA8B82948AB7FB34CDB9AEABD7C2</code> <code>29A004B9B3ACB624C5F1224B7B357127</code> <code>E9C982554B3408558A30D207BA91A7C8</code> <code>0230EF9BE4272935B264F9BC72877CA3</code> <code>A06EDD46807AE0D72B4D129AF13352EC</code> <code>925D7ACAF9126AA12C8AD65A1BAE16AE</code> <code>6D79A899E8E5D6E3FB9A09A8E3AEEE2D</code> <code>180531EDB7082CC3451333F00012611C</code> <code>1330418E1B41EC83822E766886F3CE66</code> <code>7E51B697BD15FFF64338F33B9738FB58</code> <code>C0CE553E4BE0FA87505B380D3FBBC133</code> <code>7EECAD6F3C89065E86F659DE8560A6F1</code><br> <code>436A765C</code></td>
|
|
|
|
|
<td><code>FE5001008B0A4C80B2BE1E6092DC58FE</code> <code>56EDFBAA53E6AE22E6A0494D0E3C2295</code> <code>351F05DBD24389BFE4E6B7FED4E37D0F</code> <code>103D9F82CD1CF7255A59277B523FA398</code> <code>A9B12A3CC66F0C583147243E3DE3293D</code> <code>8573DC2C25DC47AB87FE396AD0D5F1A6</code> <code>797AEB3DB8B39451C21544C22CCB4EAC</code> <code>8F11AAC1C13C03921D2F216CF6DE47E2</code> <code>865C67BBBD9EACA5FA055D511522424B</code> <code>450121363F84A508C5A07322C777D057</code> <code>BEF02238EFE6C1BCE7AD6973F3326DF2</code> <code>8FD3845F9AFD4A73F752EC0F54CA5EA3</code> <code>ADBB418292846A3E0E183B662481C27A</code> <code>76F2F5BF8F66ED3C2DC558F8D6F034B9</code> <code>F3038314738CB6A09125437D40874E0A</code> <code>976AA9A5FBB89BD49D725FD4F9173B20</code> <code>48519C7788696E1B6997E86A6F4180A4</code> <code>90F0B74B2862DFDFF65D273EBC6F8F88</code> <code>9AD62CEE4E23A8AF58C8B20DCB097321</code> <code>6B17D5AC2E1A9FDD8D9329D76D7F7257</code> <code>5525DD542339265EC5CCCCDC8B7D1611</code><br> <code>F5FB2BBE</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 = 1FDBFD18F386874AE516F8452FF188E0578C2CCDF0133E7975ABD36590BEFD075CB8BA5D0BA3EEEC16A7A5AE2D15D6132C3C02BD44A40CCF37987CC3C0354F732928308CD72DE80F0ED083ED20E52407B9F5E9FC12A264596F7B2F2B7129CED1430693D378D8E565ADA42B76E69ECEF6AF07573AE1F752871F8D27FF4AEFB45040C3CDF4BFCCF1EAF79265947B8EE3C51881E009BCA3BC36F5F998E0F6E47D5023157A1AA60E007273AF61E985CE3AA3BD069B4EE7128FA2858245A0053035F4B61AC3B8E1F3D8181013D741A6968017EF713300B6AD37591D975F26439593467782D79AC82ACA565549BF721FCB023FACF3EDB651E3BC53434C069EF865CD29</code></pre>
|
|
|
|
|
<pre><code>auth_key = C350E6966CD38FE54F2829348C9896630E32D4EB464382F4D484049A83B16174FD837150FD6D2A066E2AF51C5C46658725242D0CC95EA370F3F2EB48253A9A8CD23A10CF116D951BC5F7134333CD8CFF3FB55C9F4F938E6BFEC0FE7B060ADE0A53E5E8A76B5702E9C8290836B19BA11FDEFCF58830A7C2DD9743CCA7E8413D24C4CE6B28324A0C1007225FF3C60D0A4A4323EE2307D74B3A5D61C7E052CC6C454B9DD7F7FFA38DEFD1D510ED10C78859FD427C8038904B434957472E219111568BAE66DFA44F5A29E62483DFF612B1A980F1C5F4D173AAD6C12DBD4CFD00A3F331962BDAA874F77CD2A612D3290AB5EB331EFE909D758C887276987B9B5BCDF3</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 88 89 9A 9D 5A 99 66
|
|
|
|
|
0010 | 40 00 00 00 34 F7 CB 3B 50 78 49 F0 BB 9C 45 7D
|
|
|
|
|
0020 | BC E9 A3 22 DE EC 98 B7 4C A9 67 F1 E6 C7 3D 67
|
|
|
|
|
0030 | 7B 05 7D BF 78 DF F1 D3 A2 A7 ED 4E 1F 95 13 1C
|
|
|
|
|
0040 | 14 B8 EF 83 85 D6 3D EE</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F8 E4 4F 3E 0F 9D 66
|
|
|
|
|
0010 | 64 00 00 00 34 F7 CB 3B 87 11 D2 E9 BD E2 03 D7
|
|
|
|
|
0020 | 71 A6 F8 F0 E3 83 49 3A BF C4 18 CE E6 29 41 11
|
|
|
|
|
0030 | 19 1F 18 97 9B 20 FE A2 67 AB BB 61 AD 42 D3 7E
|
|
|
|
|
0040 | 0D 41 62 1F 42 FD E6 CE</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>0188899A9D5A9966</code></td>
|
|
|
|
|
<td><code>01F8E44F3E0F9D66</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>40000000</code> (64 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>507849F0BB9C457DBCE9A322DEEC98B7</code></td>
|
|
|
|
|
<td><code>8711D2E9BDE203D771A6F8F0E383493A</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>4CA967F1E6C73D677B057DBF78DFF1D3</code></td>
|
|
|
|
|
<td><code>BFC418CEE6294111191F18979B20FEA2</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>A2A7ED4E1F95131C14B8EF8385D63DEE</code></td>
|
|
|
|
|
<td><code>67ABBB61AD42D37E0D41621F42FDE6CE</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>
|
|
|
|
|