|
|
|
@ -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 84 1C 00 00 26 88 A2 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE D5 49 52 34 D2 F9 4E 3F
|
|
|
|
|
0020 | 02 4B DF 6D EF 52 10 8B</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 84 32 0D 00 84 90 A2 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE B8 1E E8 98 8B A0 21 46
|
|
|
|
|
0020 | C0 B5 86 ED 6E 48 FA F7</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>841C00002688A266</code></td>
|
|
|
|
|
<td><code>84320D008490A266</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>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</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 E0 99 F1 26 88 A2 66
|
|
|
|
|
0010 | 74 00 00 00 63 24 16 05 D5 49 52 34 D2 F9 4E 3F
|
|
|
|
|
0020 | 02 4B DF 6D EF 52 10 8B 91 CE 65 C0 BC 19 5D 9A
|
|
|
|
|
0030 | 0A 3F 41 56 AA 51 1B AA 08 1B 71 02 1F 03 9C 33
|
|
|
|
|
0040 | F3 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 78 06 70 84 90 A2 66
|
|
|
|
|
0010 | B0 00 00 00 63 24 16 05 B8 1E E8 98 8B A0 21 46
|
|
|
|
|
0020 | C0 B5 86 ED 6E 48 FA F7 71 C1 F5 53 57 41 48 71
|
|
|
|
|
0030 | 77 74 D4 C4 99 5C F5 44 08 27 A9 1D 5F F3 26 2B
|
|
|
|
|
0040 | 57 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>01E099F12688A266</code></td>
|
|
|
|
|
<td><code>017806708490A266</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>74000000</code> (116 in decimal)</td>
|
|
|
|
|
<td><code>B0000000</code> (176 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>081B71021F039C33F3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1977364043620168691</td>
|
|
|
|
|
<td><code>0827A91D5FF3262B57000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2857847736481753943</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 = 1977364043620168691</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1977364043620168691 = 1338204457 * 1477624763</code></p>
|
|
|
|
|
<pre><code>p = 1338204457
|
|
|
|
|
q = 1477624763</code></pre>
|
|
|
|
|
<pre><code>pq = 2857847736481753943</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2857847736481753943 = 1463159681 * 1953202903</code></p>
|
|
|
|
|
<pre><code>p = 1463159681
|
|
|
|
|
q = 1953202903</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 1B 71 02 1F 03 9C 33 F3 00 00 00
|
|
|
|
|
0010 | 04 4F C3 61 29 00 00 00 04 58 12 C3 BB 00 00 00
|
|
|
|
|
0020 | D5 49 52 34 D2 F9 4E 3F 02 4B DF 6D EF 52 10 8B
|
|
|
|
|
0030 | 91 CE 65 C0 BC 19 5D 9A 0A 3F 41 56 AA 51 1B AA
|
|
|
|
|
0040 | 86 09 1F 3A 8D 38 47 DB DB 88 DF 4E 68 8A 57 06
|
|
|
|
|
0050 | 9C 1B 45 4B C6 A3 D7 BC 43 7E F7 8C 9C A1 B2 5B
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 27 A9 1D 5F F3 26 2B 57 00 00 00
|
|
|
|
|
0010 | 04 57 36 0B 81 00 00 00 04 74 6B 82 D7 00 00 00
|
|
|
|
|
0020 | B8 1E E8 98 8B A0 21 46 C0 B5 86 ED 6E 48 FA F7
|
|
|
|
|
0030 | 71 C1 F5 53 57 41 48 71 77 74 D4 C4 99 5C F5 44
|
|
|
|
|
0040 | 6D AA 2E FD D6 10 27 7A BB 80 31 B3 B0 AA 71 7A
|
|
|
|
|
0050 | 03 95 0C BE 63 65 5A FD D4 A4 24 60 79 6B DE 22
|
|
|
|
|
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 = 1477624763</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>081B71021F039C33F3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1977364043620168691</td>
|
|
|
|
|
<td><code>0827A91D5FF3262B57000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2857847736481753943</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>044FC36129000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1338204457</td>
|
|
|
|
|
<td><code>0457360B81000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1463159681</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>045812C3BB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1477624763</td>
|
|
|
|
|
<td><code>04746B82D7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1953202903</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>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>86091F3A8D3847DBDB88DF4E688A5706</code> <code>9C1B454BC6A3D7BC437EF78C9CA1B25B</code></td>
|
|
|
|
|
<td><code>6DAA2EFDD610277ABB8031B3B0AA717A</code> <code>03950CBE63655AFDD4A42460796BDE22</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1477624763</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 = 955FF5A9081B71021F039C33F3000000044FC36129000000045812C3BB000000D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BAA86091F3A8D3847DBDB88DF4E688A57069C1B454BC6A3D7BC437EF78C9CA1B25B02000000
|
|
|
|
|
random_padding_bytes = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC3607BF3AC49009C087970240A4B436675CCEB8941EEFA4C187A269A96F088718A0AB909D9B63103C513CB51894B67E5A1E36B0FDEAB53F1187833FF2E5B73126A</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A90827A91D5FF3262B570000000457360B8100000004746B82D7000000B81EE8988BA02146C0B586ED6E48FAF771C1F553574148717774D4C4995CF5446DAA2EFDD610277ABB8031B3B0AA717A03950CBE63655AFDD4A42460796BDE2202000000
|
|
|
|
|
random_padding_bytes = 69E092E50B0AD67D6BFD8CAF612C2B852A0E890E09EFB78D28319AA6B2827B8A2446068F0BB195CA24668AA5B0008FD3891EF71588DD1B48767830F926C9D83C7DD532AD2A9CA011B534E58042307AC4FB2502B9B228628D8A7B643B</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 = 81D68F713065B63EACA49E0BBC3E7283B247D50BC53A08D8B020CAE60C5141EB9A103F354288EA611E758F20614D3588CA43F2376711C34A339C7597002E13AA81CDEE14A65761258EE967096CB77249915C4B45DEC98C607EDB65659E22A672DDBE4BB7F03CCEDA6DC5E56A28C93AD4380B24ECDD0D117982D447DE54F48B28F4F1A7B3A792060A4CE543B8A526653BBD140BB533F50462D912749BC7638CB27ED4652CDD03CC63D40D2DBC451B1E3389431BE046D5D765E694D8A36B5D6D56318EAF229A24567AD08CE7B77B333C6563012580E4E95AC0A574BA9D10D3A4EE94177BD0DFFA842823692B8E9ED43C4977D32EEB1653516EB28C2F2A195F1614</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = C616B3FD7EBD370E1C9280766678C627401185FE0714795CC93A8209D3DABA9D6C334D56F5AC96A121830F130182D46AB6931176C025FEDF6E201D0C999C6F2C3828CCA61866FDC5AE0E9E0CD9C823A048D85517E8C7245CA4BA133997419137B4E6E5E914C205BF4110857F42F80A50189CFD65A62B3F4FC6B53F03FB619E9B521F2B0AC481B496C0D071C92BE35014E7817F4CF4185278A8DB7D3ACA323699FC415CA25D86F830FD0253195AF221D0550152FD5F8A53BAB4B9287ED541ADEB48A65DC504D5CE595B992E6D237DFDB8C9F9A30D80531FCCC2127D5EFF4FD3DFBA5A181E7B7C5A709CD58D2BBF0D5D4CBA13D9D055ACD6D9C9753CC54160E351</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 7C A4 01 00 27 88 A2 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 D5 49 52 34 D2 F9 4E 3F
|
|
|
|
|
0020 | 02 4B DF 6D EF 52 10 8B 91 CE 65 C0 BC 19 5D 9A
|
|
|
|
|
0030 | 0A 3F 41 56 AA 51 1B AA 04 4F C3 61 29 00 00 00
|
|
|
|
|
0040 | 04 58 12 C3 BB 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 81 D6 8F 71 30 65 B6 3E AC A4 9E 0B
|
|
|
|
|
0060 | BC 3E 72 83 B2 47 D5 0B C5 3A 08 D8 B0 20 CA E6
|
|
|
|
|
0070 | 0C 51 41 EB 9A 10 3F 35 42 88 EA 61 1E 75 8F 20
|
|
|
|
|
0080 | 61 4D 35 88 CA 43 F2 37 67 11 C3 4A 33 9C 75 97
|
|
|
|
|
0090 | 00 2E 13 AA 81 CD EE 14 A6 57 61 25 8E E9 67 09
|
|
|
|
|
00A0 | 6C B7 72 49 91 5C 4B 45 DE C9 8C 60 7E DB 65 65
|
|
|
|
|
00B0 | 9E 22 A6 72 DD BE 4B B7 F0 3C CE DA 6D C5 E5 6A
|
|
|
|
|
00C0 | 28 C9 3A D4 38 0B 24 EC DD 0D 11 79 82 D4 47 DE
|
|
|
|
|
00D0 | 54 F4 8B 28 F4 F1 A7 B3 A7 92 06 0A 4C E5 43 B8
|
|
|
|
|
00E0 | A5 26 65 3B BD 14 0B B5 33 F5 04 62 D9 12 74 9B
|
|
|
|
|
00F0 | C7 63 8C B2 7E D4 65 2C DD 03 CC 63 D4 0D 2D BC
|
|
|
|
|
0100 | 45 1B 1E 33 89 43 1B E0 46 D5 D7 65 E6 94 D8 A3
|
|
|
|
|
0110 | 6B 5D 6D 56 31 8E AF 22 9A 24 56 7A D0 8C E7 B7
|
|
|
|
|
0120 | 7B 33 3C 65 63 01 25 80 E4 E9 5A C0 A5 74 BA 9D
|
|
|
|
|
0130 | 10 D3 A4 EE 94 17 7B D0 DF FA 84 28 23 69 2B 8E
|
|
|
|
|
0140 | 9E D4 3C 49 77 D3 2E EB 16 53 51 6E B2 8C 2F 2A
|
|
|
|
|
0150 | 19 5F 16 14</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 88 32 0D 00 84 90 A2 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 B8 1E E8 98 8B A0 21 46
|
|
|
|
|
0020 | C0 B5 86 ED 6E 48 FA F7 71 C1 F5 53 57 41 48 71
|
|
|
|
|
0030 | 77 74 D4 C4 99 5C F5 44 04 57 36 0B 81 00 00 00
|
|
|
|
|
0040 | 04 74 6B 82 D7 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 C6 16 B3 FD 7E BD 37 0E 1C 92 80 76
|
|
|
|
|
0060 | 66 78 C6 27 40 11 85 FE 07 14 79 5C C9 3A 82 09
|
|
|
|
|
0070 | D3 DA BA 9D 6C 33 4D 56 F5 AC 96 A1 21 83 0F 13
|
|
|
|
|
0080 | 01 82 D4 6A B6 93 11 76 C0 25 FE DF 6E 20 1D 0C
|
|
|
|
|
0090 | 99 9C 6F 2C 38 28 CC A6 18 66 FD C5 AE 0E 9E 0C
|
|
|
|
|
00A0 | D9 C8 23 A0 48 D8 55 17 E8 C7 24 5C A4 BA 13 39
|
|
|
|
|
00B0 | 97 41 91 37 B4 E6 E5 E9 14 C2 05 BF 41 10 85 7F
|
|
|
|
|
00C0 | 42 F8 0A 50 18 9C FD 65 A6 2B 3F 4F C6 B5 3F 03
|
|
|
|
|
00D0 | FB 61 9E 9B 52 1F 2B 0A C4 81 B4 96 C0 D0 71 C9
|
|
|
|
|
00E0 | 2B E3 50 14 E7 81 7F 4C F4 18 52 78 A8 DB 7D 3A
|
|
|
|
|
00F0 | CA 32 36 99 FC 41 5C A2 5D 86 F8 30 FD 02 53 19
|
|
|
|
|
0100 | 5A F2 21 D0 55 01 52 FD 5F 8A 53 BA B4 B9 28 7E
|
|
|
|
|
0110 | D5 41 AD EB 48 A6 5D C5 04 D5 CE 59 5B 99 2E 6D
|
|
|
|
|
0120 | 23 7D FD B8 C9 F9 A3 0D 80 53 1F CC C2 12 7D 5E
|
|
|
|
|
0130 | FF 4F D3 DF BA 5A 18 1E 7B 7C 5A 70 9C D5 8D 2B
|
|
|
|
|
0140 | BF 0D 5D 4C BA 13 D9 D0 55 AC D6 D9 C9 75 3C C5
|
|
|
|
|
0150 | 41 60 E3 51</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 = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC36
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>7CA401002788A266</code></td>
|
|
|
|
|
<td><code>88320D008490A266</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 = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC36
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>044FC36129000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1338204457</td>
|
|
|
|
|
<td><code>0457360B81000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1463159681</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>045812C3BB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1477624763</td>
|
|
|
|
|
<td><code>04746B82D7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1953202903</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 = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC36
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE00010081D68F713065B63EACA49E0B</code> <code>BC3E7283B247D50BC53A08D8B020CAE6</code> <code>0C5141EB9A103F354288EA611E758F20</code> <code>614D3588CA43F2376711C34A339C7597</code> <code>002E13AA81CDEE14A65761258EE96709</code> <code>6CB77249915C4B45DEC98C607EDB6565</code> <code>9E22A672DDBE4BB7F03CCEDA6DC5E56A</code> <code>28C93AD4380B24ECDD0D117982D447DE</code> <code>54F48B28F4F1A7B3A792060A4CE543B8</code> <code>A526653BBD140BB533F50462D912749B</code> <code>C7638CB27ED4652CDD03CC63D40D2DBC</code> <code>451B1E3389431BE046D5D765E694D8A3</code> <code>6B5D6D56318EAF229A24567AD08CE7B7</code> <code>7B333C6563012580E4E95AC0A574BA9D</code> <code>10D3A4EE94177BD0DFFA842823692B8E</code> <code>9ED43C4977D32EEB1653516EB28C2F2A</code><br> <code>195F1614</code></td>
|
|
|
|
|
<td><code>FE000100C616B3FD7EBD370E1C928076</code> <code>6678C627401185FE0714795CC93A8209</code> <code>D3DABA9D6C334D56F5AC96A121830F13</code> <code>0182D46AB6931176C025FEDF6E201D0C</code> <code>999C6F2C3828CCA61866FDC5AE0E9E0C</code> <code>D9C823A048D85517E8C7245CA4BA1339</code> <code>97419137B4E6E5E914C205BF4110857F</code> <code>42F80A50189CFD65A62B3F4FC6B53F03</code> <code>FB619E9B521F2B0AC481B496C0D071C9</code> <code>2BE35014E7817F4CF4185278A8DB7D3A</code> <code>CA323699FC415CA25D86F830FD025319</code> <code>5AF221D0550152FD5F8A53BAB4B9287E</code> <code>D541ADEB48A65DC504D5CE595B992E6D</code> <code>237DFDB8C9F9A30D80531FCCC2127D5E</code> <code>FF4FD3DFBA5A181E7B7C5A709CD58D2B</code> <code>BF0D5D4CBA13D9D055ACD6D9C9753CC5</code><br> <code>4160E351</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC36
|
|
|
|
|
<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 B4 4D C9 27 88 A2 66
|
|
|
|
|
0010 | 78 02 00 00 5C 07 E8 D0 D5 49 52 34 D2 F9 4E 3F
|
|
|
|
|
0020 | 02 4B DF 6D EF 52 10 8B 91 CE 65 C0 BC 19 5D 9A
|
|
|
|
|
0030 | 0A 3F 41 56 AA 51 1B AA FE 50 02 00 26 43 49 06
|
|
|
|
|
0040 | CC A6 F9 0D 1A 09 DE 80 57 5A 51 EE F2 5D B1 D9
|
|
|
|
|
0050 | 04 C5 77 B7 5E CA 4A B1 23 EE 99 BD 87 3D 1B C5
|
|
|
|
|
0060 | 09 39 02 2C 69 BD D9 21 4E 78 D0 DE 5B B5 9F DB
|
|
|
|
|
0070 | 62 1F 47 ED B1 F2 7E 66 08 CA 7D EB 59 17 27 97
|
|
|
|
|
0080 | AE 7A 6C 3F 9B 18 D2 CA 10 96 29 51 86 09 E5 74
|
|
|
|
|
0090 | E1 2A 8A 7A 9E BB 22 E0 71 61 01 D7 E7 CB 61 C1
|
|
|
|
|
00A0 | 4E C5 65 81 C8 96 13 C2 F8 68 CE BC 36 45 11 BB
|
|
|
|
|
00B0 | 86 AB AB 29 12 D5 61 F9 D9 39 4C EA D7 28 EE 33
|
|
|
|
|
00C0 | 13 85 89 5C EF 5D B4 93 A2 72 E8 20 67 53 AF 7F
|
|
|
|
|
00D0 | 8E EF CB 04 C5 B8 DA 52 98 E5 21 02 D8 8F 94 08
|
|
|
|
|
00E0 | 9F 9A F2 8E 0A A1 36 83 8F 95 00 DD FC 28 3A FB
|
|
|
|
|
00F0 | 34 45 E3 60 40 53 33 08 F7 63 A1 71 1C 0B E9 C0
|
|
|
|
|
0100 | DE 87 A1 E3 32 99 7E D9 FC 8D 4F DC 11 41 CB C4
|
|
|
|
|
0110 | 28 CC 91 9A 6A B9 CE FD 53 8A AA 0C 62 99 EC 3D
|
|
|
|
|
0120 | F7 67 C9 7E 6E 5F 06 30 18 08 DE C8 60 BA F0 53
|
|
|
|
|
0130 | 24 D8 2D D8 8F 00 A9 3C BC 65 67 FD B8 67 23 99
|
|
|
|
|
0140 | ED F5 EE B2 6E 5B CF 24 A5 1C DE 67 F6 3D 43 4F
|
|
|
|
|
0150 | 68 52 65 FA 4D BB D7 BB 93 9D DF 66 31 10 B3 A9
|
|
|
|
|
0160 | CB 29 BA CD 39 33 04 C7 BE 6D A0 53 7F 9E ED 7F
|
|
|
|
|
0170 | F8 54 82 0C 8B A2 48 6E 32 97 30 F5 F1 F5 03 F0
|
|
|
|
|
0180 | EB 5F FD 8E AC 39 86 8D 08 F8 9A 74 A6 44 21 7F
|
|
|
|
|
0190 | C5 B3 98 54 3D 35 14 B2 F3 01 FA B1 BC 7C B6 0A
|
|
|
|
|
01A0 | 60 A3 EA F7 99 2D D1 69 AA CC BE 34 B1 0A 62 AB
|
|
|
|
|
01B0 | A0 9C 67 17 DA A9 AF 8D 91 21 10 31 12 09 F4 8F
|
|
|
|
|
01C0 | A6 1B 74 BC D5 23 F0 9C C7 85 1A 02 4C 8E A8 41
|
|
|
|
|
01D0 | E3 EB 37 DB 14 3D 5E C8 2C 82 67 26 CA 1B AD 0A
|
|
|
|
|
01E0 | 8A B4 C8 E9 C4 CB 63 4B 24 9D E8 B6 C1 E9 90 9C
|
|
|
|
|
01F0 | B4 8B C6 1A 65 6D 5A 5A 08 52 4D 3C 95 BB FE 86
|
|
|
|
|
0200 | 31 2C 50 3A 53 FA 7D 75 5D 67 52 1C 45 FB 81 69
|
|
|
|
|
0210 | B6 B5 F2 AE 57 F2 04 26 F5 75 B2 7C E1 82 00 3E
|
|
|
|
|
0220 | FA 8F EE AF 88 D2 8B 3D 80 2D 17 F4 9A C5 85 16
|
|
|
|
|
0230 | 5F 89 99 7D 04 86 F9 68 85 DA AE FE A1 3A CF 9F
|
|
|
|
|
0240 | 25 5F 15 1D 9F FA C3 6A 0D D2 85 4A 36 3F 43 20
|
|
|
|
|
0250 | 35 4F 12 E3 CE 11 66 51 F0 41 3E 85 14 27 87 FA
|
|
|
|
|
0260 | C5 32 3F 9C 83 5A CF 98 94 0D 9E E0 A0 2B F4 2F
|
|
|
|
|
0270 | 88 26 77 26 A9 33 52 42 15 23 C6 F4 A8 0F BA 96
|
|
|
|
|
0280 | BE 84 7F 84 11 FE 44 62 7C A4 62 49</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F8 96 3F 85 90 A2 66
|
|
|
|
|
0010 | 7C 02 00 00 5C 07 E8 D0 B8 1E E8 98 8B A0 21 46
|
|
|
|
|
0020 | C0 B5 86 ED 6E 48 FA F7 71 C1 F5 53 57 41 48 71
|
|
|
|
|
0030 | 77 74 D4 C4 99 5C F5 44 FE 50 02 00 47 5B BE CE
|
|
|
|
|
0040 | 6C 46 22 4C C4 C5 67 9D 72 3D 24 59 8D 98 65 4C
|
|
|
|
|
0050 | BD 0D D1 56 F6 12 4B 11 18 D7 5B 41 5D 29 3D A5
|
|
|
|
|
0060 | 9E E6 E5 98 C5 BF 7B 7D F1 7A 3D 5D D7 0B 34 FD
|
|
|
|
|
0070 | 12 29 90 34 99 C5 03 12 B1 B9 BD BD 9C 1F A9 67
|
|
|
|
|
0080 | 95 0B EF BC F4 AF 43 AB DF BE 33 E3 88 5A 6E 62
|
|
|
|
|
0090 | BF ED DB 58 30 93 66 16 E4 AF 9B 89 BF 75 26 99
|
|
|
|
|
00A0 | 70 5A 61 0C BA BA 62 AB 5A EF 88 1F 95 54 69 3B
|
|
|
|
|
00B0 | 72 F0 FD D0 54 C8 73 6C D3 38 D7 5F 0D C8 0C 13
|
|
|
|
|
00C0 | C2 DC 1D BB ED 4B 48 93 34 58 D9 B0 B3 5D 8A 2D
|
|
|
|
|
00D0 | 5A 15 11 66 E2 07 11 6E 43 B7 24 B3 77 EA E3 30
|
|
|
|
|
00E0 | A5 45 74 6C 6F E4 59 F3 49 74 34 C4 59 E5 9E E6
|
|
|
|
|
00F0 | 4C D0 A8 DE C0 E0 96 4D 6D 70 DB 0F ED 7E FC B4
|
|
|
|
|
0100 | B1 BB 3D 09 8A 2A 48 81 27 88 2D 07 B5 02 03 3A
|
|
|
|
|
0110 | 06 1F E1 AF A8 46 75 74 15 08 6E E6 78 C0 43 CE
|
|
|
|
|
0120 | F9 06 F4 D5 1E 08 55 F0 05 88 3A 31 1C ED F0 2F
|
|
|
|
|
0130 | B9 35 AF 67 89 C8 BE 18 C3 3E BE AE DF 34 04 A0
|
|
|
|
|
0140 | 46 E9 37 47 18 7E BF E7 15 B4 07 73 63 57 FB D1
|
|
|
|
|
0150 | 2D B4 8D 20 0F D4 DA 76 BE B5 2F 1B 8C A0 66 DE
|
|
|
|
|
0160 | F5 6B B2 69 C8 0F 0E 38 81 AE 1A 10 01 2B D4 49
|
|
|
|
|
0170 | AB 41 7A 63 84 D8 6B F6 99 A7 98 9E BD 56 6A FD
|
|
|
|
|
0180 | A4 AB A1 76 A0 1F 25 46 25 CC D3 4E A8 5E 14 77
|
|
|
|
|
0190 | 30 DF AA BC 9F AB 5C D8 2F A6 C2 69 64 E2 04 44
|
|
|
|
|
01A0 | 69 AA 8A B5 07 78 DA 3C 33 2A F8 DA B7 F3 EF CA
|
|
|
|
|
01B0 | 19 5F ED 61 57 2B 0E C4 01 EB C5 52 81 8F 48 25
|
|
|
|
|
01C0 | 07 78 B2 00 7F 5F 72 CE E3 F0 1C B8 64 3C 0F 85
|
|
|
|
|
01D0 | CF 39 A7 6C 19 FB EE E6 C0 FE C3 B0 4D 22 79 02
|
|
|
|
|
01E0 | 86 03 E1 44 B8 BE D6 3C CA 16 8B F8 3E 1D 66 E0
|
|
|
|
|
01F0 | 47 E0 64 3A 1B 90 39 9F 5E 49 1E B8 1D 39 61 ED
|
|
|
|
|
0200 | 2C 0A 21 44 33 38 A4 7C 62 26 62 44 8E 13 47 F3
|
|
|
|
|
0210 | 04 DD C9 EF 9B 5C 91 FA 09 87 26 1D 8B 08 5F 2B
|
|
|
|
|
0220 | F2 77 3F AE 15 CC 42 78 0C 07 91 65 34 4D F2 4C
|
|
|
|
|
0230 | E1 FF 4A 9F B0 F0 2C E3 F0 10 6E 85 29 D2 1F 75
|
|
|
|
|
0240 | 55 FB AC 26 3A 42 0D DA B1 A6 CC C7 F6 33 6B 98
|
|
|
|
|
0250 | 53 B8 4E C5 AE 67 CE 63 8C A1 01 FE 04 14 7E 64
|
|
|
|
|
0260 | A0 D5 03 9D D1 70 07 B0 2A EE B3 73 45 58 E2 53
|
|
|
|
|
0270 | 78 60 AA 99 0A 5D FD 6B E4 8A CE 6E DE 1D 72 B8
|
|
|
|
|
0280 | 54 43 B2 D2 60 56 CE 66 32 01 F5 AE</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 = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC36
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01B44DC92788A266</code></td>
|
|
|
|
|
<td><code>01F8963F8590A266</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 = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC36
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE50020026434906CCA6F90D1A09DE80</code> <code>575A51EEF25DB1D904C577B75ECA4AB1</code> <code>23EE99BD873D1BC50939022C69BDD921</code> <code>4E78D0DE5BB59FDB621F47EDB1F27E66</code> <code>08CA7DEB59172797AE7A6C3F9B18D2CA</code> <code>109629518609E574E12A8A7A9EBB22E0</code> <code>716101D7E7CB61C14EC56581C89613C2</code> <code>F868CEBC364511BB86ABAB2912D561F9</code> <code>D9394CEAD728EE331385895CEF5DB493</code> <code>A272E8206753AF7F8EEFCB04C5B8DA52</code> <code>98E52102D88F94089F9AF28E0AA13683</code> <code>8F9500DDFC283AFB3445E36040533308</code> <code>F763A1711C0BE9C0DE87A1E332997ED9</code> <code>FC8D4FDC1141CBC428CC919A6AB9CEFD</code> <code>538AAA0C6299EC3DF767C97E6E5F0630</code> <code>1808DEC860BAF05324D82DD88F00A93C</code> <code>BC6567FDB8672399EDF5EEB26E5BCF24</code> <code>A51CDE67F63D434F685265FA4DBBD7BB</code> <code>939DDF663110B3A9CB29BACD393304C7</code> <code>BE6DA0537F9EED7FF854820C8BA2486E</code> <code>329730F5F1F503F0EB5FFD8EAC39868D</code> <code>08F89A74A644217FC5B398543D3514B2</code> <code>F301FAB1BC7CB60A60A3EAF7992DD169</code> <code>AACCBE34B10A62ABA09C6717DAA9AF8D</code> <code>912110311209F48FA61B74BCD523F09C</code> <code>C7851A024C8EA841E3EB37DB143D5EC8</code> <code>2C826726CA1BAD0A8AB4C8E9C4CB634B</code> <code>249DE8B6C1E9909CB48BC61A656D5A5A</code> <code>08524D3C95BBFE86312C503A53FA7D75</code> <code>5D67521C45FB8169B6B5F2AE57F20426</code> <code>F575B27CE182003EFA8FEEAF88D28B3D</code> <code>802D17F49AC585165F89997D0486F968</code> <code>85DAAEFEA13ACF9F255F151D9FFAC36A</code> <code>0DD2854A363F4320354F12E3CE116651</code> <code>F0413E85142787FAC5323F9C835ACF98</code> <code>940D9EE0A02BF42F88267726A9335242</code> <code>1523C6F4A80FBA96BE847F8411FE4462</code><br> <code>7CA46249</code></td>
|
|
|
|
|
<td><code>FE500200475BBECE6C46224CC4C5679D</code> <code>723D24598D98654CBD0DD156F6124B11</code> <code>18D75B415D293DA59EE6E598C5BF7B7D</code> <code>F17A3D5DD70B34FD1229903499C50312</code> <code>B1B9BDBD9C1FA967950BEFBCF4AF43AB</code> <code>DFBE33E3885A6E62BFEDDB5830936616</code> <code>E4AF9B89BF752699705A610CBABA62AB</code> <code>5AEF881F9554693B72F0FDD054C8736C</code> <code>D338D75F0DC80C13C2DC1DBBED4B4893</code> <code>3458D9B0B35D8A2D5A151166E207116E</code> <code>43B724B377EAE330A545746C6FE459F3</code> <code>497434C459E59EE64CD0A8DEC0E0964D</code> <code>6D70DB0FED7EFCB4B1BB3D098A2A4881</code> <code>27882D07B502033A061FE1AFA8467574</code> <code>15086EE678C043CEF906F4D51E0855F0</code> <code>05883A311CEDF02FB935AF6789C8BE18</code> <code>C33EBEAEDF3404A046E93747187EBFE7</code> <code>15B407736357FBD12DB48D200FD4DA76</code> <code>BEB52F1B8CA066DEF56BB269C80F0E38</code> <code>81AE1A10012BD449AB417A6384D86BF6</code> <code>99A7989EBD566AFDA4ABA176A01F2546</code> <code>25CCD34EA85E147730DFAABC9FAB5CD8</code> <code>2FA6C26964E2044469AA8AB50778DA3C</code> <code>332AF8DAB7F3EFCA195FED61572B0EC4</code> <code>01EBC552818F48250778B2007F5F72CE</code> <code>E3F01CB8643C0F85CF39A76C19FBEEE6</code> <code>C0FEC3B04D2279028603E144B8BED63C</code> <code>CA168BF83E1D66E047E0643A1B90399F</code> <code>5E491EB81D3961ED2C0A21443338A47C</code> <code>622662448E1347F304DDC9EF9B5C91FA</code> <code>0987261D8B085F2BF2773FAE15CC4278</code> <code>0C079165344DF24CE1FF4A9FB0F02CE3</code> <code>F0106E8529D21F7555FBAC263A420DDA</code> <code>B1A6CCC7F6336B9853B84EC5AE67CE63</code> <code>8CA101FE04147E64A0D5039DD17007B0</code> <code>2AEEB3734558E2537860AA990A5DFD6B</code> <code>E48ACE6EDE1D72B85443B2D26056CE66</code><br> <code>3201F5AE</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 75C88EFAEDE3F11885EF451A697D383137C41695B2B77E8D03109FC36
|
|
|
|
|
<!-- 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 = 26434906CCA6F90D1A09DE80575A51EEF25DB1D904C577B75ECA4AB123EE99BD873D1BC50939022C69BDD9214E78D0DE5BB59FDB621F47EDB1F27E6608CA7DEB59172797AE7A6C3F9B18D2CA109629518609E574E12A8A7A9EBB22E0716101D7E7CB61C14EC56581C89613C2F868CEBC364511BB86ABAB2912D561F9D9394CEAD728EE331385895CEF5DB493A272E8206753AF7F8EEFCB04C5B8DA5298E52102D88F94089F9AF28E0AA136838F9500DDFC283AFB3445E36040533308F763A1711C0BE9C0DE87A1E332997ED9FC8D4FDC1141CBC428CC919A6AB9CEFD538AAA0C6299EC3DF767C97E6E5F06301808DEC860BAF05324D82DD88F00A93CBC6567FDB8672399EDF5EEB26E5BCF24A51CDE67F63D434F685265FA4DBBD7BB939DDF663110B3A9CB29BACD393304C7BE6DA0537F9EED7FF854820C8BA2486E329730F5F1F503F0EB5FFD8EAC39868D08F89A74A644217FC5B398543D3514B2F301FAB1BC7CB60A60A3EAF7992DD169AACCBE34B10A62ABA09C6717DAA9AF8D912110311209F48FA61B74BCD523F09CC7851A024C8EA841E3EB37DB143D5EC82C826726CA1BAD0A8AB4C8E9C4CB634B249DE8B6C1E9909CB48BC61A656D5A5A08524D3C95BBFE86312C503A53FA7D755D67521C45FB8169B6B5F2AE57F20426F575B27CE182003EFA8FEEAF88D28B3D802D17F49AC585165F89997D0486F96885DAAEFEA13ACF9F255F151D9FFAC36A0DD2854A363F4320354F12E3CE116651F0413E85142787FAC5323F9C835ACF98940D9EE0A02BF42F88267726A93352421523C6F4A80FBA96BE847F8411FE44627CA46249
|
|
|
|
|
tmp_aes_key = D3922C50D6EF99ADFD87C8BDDFFD4CDA1C3D6316A316CF3C8DBD1F46DF79D162
|
|
|
|
|
tmp_aes_iv = F80B1F841E55718E97B0730CBC1A88C5686A4CA91926680348AD74FB86091F3A</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = 475BBECE6C46224CC4C5679D723D24598D98654CBD0DD156F6124B1118D75B415D293DA59EE6E598C5BF7B7DF17A3D5DD70B34FD1229903499C50312B1B9BDBD9C1FA967950BEFBCF4AF43ABDFBE33E3885A6E62BFEDDB5830936616E4AF9B89BF752699705A610CBABA62AB5AEF881F9554693B72F0FDD054C8736CD338D75F0DC80C13C2DC1DBBED4B48933458D9B0B35D8A2D5A151166E207116E43B724B377EAE330A545746C6FE459F3497434C459E59EE64CD0A8DEC0E0964D6D70DB0FED7EFCB4B1BB3D098A2A488127882D07B502033A061FE1AFA846757415086EE678C043CEF906F4D51E0855F005883A311CEDF02FB935AF6789C8BE18C33EBEAEDF3404A046E93747187EBFE715B407736357FBD12DB48D200FD4DA76BEB52F1B8CA066DEF56BB269C80F0E3881AE1A10012BD449AB417A6384D86BF699A7989EBD566AFDA4ABA176A01F254625CCD34EA85E147730DFAABC9FAB5CD82FA6C26964E2044469AA8AB50778DA3C332AF8DAB7F3EFCA195FED61572B0EC401EBC552818F48250778B2007F5F72CEE3F01CB8643C0F85CF39A76C19FBEEE6C0FEC3B04D2279028603E144B8BED63CCA168BF83E1D66E047E0643A1B90399F5E491EB81D3961ED2C0A21443338A47C622662448E1347F304DDC9EF9B5C91FA0987261D8B085F2BF2773FAE15CC42780C079165344DF24CE1FF4A9FB0F02CE3F0106E8529D21F7555FBAC263A420DDAB1A6CCC7F6336B9853B84EC5AE67CE638CA101FE04147E64A0D5039DD17007B02AEEB3734558E2537860AA990A5DFD6BE48ACE6EDE1D72B85443B2D26056CE663201F5AE
|
|
|
|
|
tmp_aes_key = C7662A7CD11630CAE946C0E8C90E28B8291DA1C29130D81D8341A55D47C1F4BE
|
|
|
|
|
tmp_aes_iv = F69ACF2331B4EDB15931C58AF8A570F560D6281C7EE7C2F40868B76A6DAA2EFD</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 748D7299A8A39DD2AEE663D6151A94EC7C49892BBA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BAA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010067409202B2D24664CA1A3CFF2EA1C56C8B428EA8AFE9552870366AE99142CEA27F6E013DA6CE86221FFA5B56716A8DD955058F30CC63A3C225987203EF629DF95B69DD7E363E9B8E7431930CAAFC15BE11880E8DFA81CD4074532E0E634D7D2D127ECDABF432DE36640767A6AFD010B092632EA434A4A05ABAA388E7BA52BC5BFC85A8500216671EE3CA7398A3EC208176CDA3D8A17C2F4A8E7352CFDD4DC6C5025EC6A9453DEF5715322AA589E506154074994C724E922ECE1B7907BF3DD95FE5DC069BFE72E791A1E8E4D4F5CB38F79C5E619ACA32F49D49B26FDF656085037803BED1DAF2EC623AEF9867BB78DEB94ACC676D402EA0141915AE293E50ED3B2788A266314D36040518DBAC
|
|
|
|
|
answer = BA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BAA03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010067409202B2D24664CA1A3CFF2EA1C56C8B428EA8AFE9552870366AE99142CEA27F6E013DA6CE86221FFA5B56716A8DD955058F30CC63A3C225987203EF629DF95B69DD7E363E9B8E7431930CAAFC15BE11880E8DFA81CD4074532E0E634D7D2D127ECDABF432DE36640767A6AFD010B092632EA434A4A05ABAA388E7BA52BC5BFC85A8500216671EE3CA7398A3EC208176CDA3D8A17C2F4A8E7352CFDD4DC6C5025EC6A9453DEF5715322AA589E506154074994C724E922ECE1B7907BF3DD95FE5DC069BFE72E791A1E8E4D4F5CB38F79C5E619ACA32F49D49B26FDF656085037803BED1DAF2EC623AEF9867BB78DEB94ACC676D402EA0141915AE293E50ED3B2788A266314D36040518DBAC</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 645ECD8175ED7E2EECAFB6836F63F77DF4997C77BA0D89B5B81EE8988BA02146C0B586ED6E48FAF771C1F553574148717774D4C4995CF54403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFEFF0000E1423A539D948A59D31D200D4B7CC58F76380EDCF090A93A024CDF0C01D95C2B1B336CE19D2B7A5DCC3A0D879D3488006C2EA97344FBFEA5AF18DF21780867A15C9C87ABDFB53499CC37FBF6574233F43C08290D2928F375575CD55387228123C14A5AB18AF99BA0E1BFCDC81ADA129AA4311EC81368FCA5743615AE2B5227D9C347158153FCB062E6C182DFBC68A62B11DD42EB578DA81E6C07342C20213569D312360D0F802E8D9EE01A611081C1C682C4218370F0E073D6138DBE6E0C09DC07AEED430A6D965E3C5B3F4E3627CA8F1CCBBAA20790C84F124B815458D123D45BBEAAD191DCB294646BFF46A3741F5B4312C80FE993C4E14779C3DC2A0FD0008590A266EECFE0BACF892D30
|
|
|
|
|
answer = BA0D89B5B81EE8988BA02146C0B586ED6E48FAF771C1F553574148717774D4C4995CF54403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFEFF0000E1423A539D948A59D31D200D4B7CC58F76380EDCF090A93A024CDF0C01D95C2B1B336CE19D2B7A5DCC3A0D879D3488006C2EA97344FBFEA5AF18DF21780867A15C9C87ABDFB53499CC37FBF6574233F43C08290D2928F375575CD55387228123C14A5AB18AF99BA0E1BFCDC81ADA129AA4311EC81368FCA5743615AE2B5227D9C347158153FCB062E6C182DFBC68A62B11DD42EB578DA81E6C07342C20213569D312360D0F802E8D9EE01A611081C1C682C4218370F0E073D6138DBE6E0C09DC07AEED430A6D965E3C5B3F4E3627CA8F1CCBBAA20790C84F124B815458D123D45BBEAAD191DCB294646BFF46A3741F5B4312C80FE993C4E14779C3DC2A0FD0008590A266EECFE0BACF892D30</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 D5 49 52 34 D2 F9 4E 3F 02 4B DF 6D
|
|
|
|
|
0010 | EF 52 10 8B 91 CE 65 C0 BC 19 5D 9A 0A 3F 41 56
|
|
|
|
|
0020 | AA 51 1B AA 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 B8 1E E8 98 8B A0 21 46 C0 B5 86 ED
|
|
|
|
|
0010 | 6E 48 FA F7 71 C1 F5 53 57 41 48 71 77 74 D4 C4
|
|
|
|
|
0020 | 99 5C F5 44 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
|
|
|
|
@ -531,24 +531,24 @@ answer = BA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BA
|
|
|
|
|
00F0 | E8 3E BE A0 F8 7F A9 FF 5E ED 70 05 0D ED 28 49
|
|
|
|
|
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 | 67 40 92 02 B2 D2 46 64 CA 1A 3C FF 2E A1 C5 6C
|
|
|
|
|
0140 | 8B 42 8E A8 AF E9 55 28 70 36 6A E9 91 42 CE A2
|
|
|
|
|
0150 | 7F 6E 01 3D A6 CE 86 22 1F FA 5B 56 71 6A 8D D9
|
|
|
|
|
0160 | 55 05 8F 30 CC 63 A3 C2 25 98 72 03 EF 62 9D F9
|
|
|
|
|
0170 | 5B 69 DD 7E 36 3E 9B 8E 74 31 93 0C AA FC 15 BE
|
|
|
|
|
0180 | 11 88 0E 8D FA 81 CD 40 74 53 2E 0E 63 4D 7D 2D
|
|
|
|
|
0190 | 12 7E CD AB F4 32 DE 36 64 07 67 A6 AF D0 10 B0
|
|
|
|
|
01A0 | 92 63 2E A4 34 A4 A0 5A BA A3 88 E7 BA 52 BC 5B
|
|
|
|
|
01B0 | FC 85 A8 50 02 16 67 1E E3 CA 73 98 A3 EC 20 81
|
|
|
|
|
01C0 | 76 CD A3 D8 A1 7C 2F 4A 8E 73 52 CF DD 4D C6 C5
|
|
|
|
|
01D0 | 02 5E C6 A9 45 3D EF 57 15 32 2A A5 89 E5 06 15
|
|
|
|
|
01E0 | 40 74 99 4C 72 4E 92 2E CE 1B 79 07 BF 3D D9 5F
|
|
|
|
|
01F0 | E5 DC 06 9B FE 72 E7 91 A1 E8 E4 D4 F5 CB 38 F7
|
|
|
|
|
0200 | 9C 5E 61 9A CA 32 F4 9D 49 B2 6F DF 65 60 85 03
|
|
|
|
|
0210 | 78 03 BE D1 DA F2 EC 62 3A EF 98 67 BB 78 DE B9
|
|
|
|
|
0220 | 4A CC 67 6D 40 2E A0 14 19 15 AE 29 3E 50 ED 3B
|
|
|
|
|
0230 | 27 88 A2 66</code></pre>
|
|
|
|
|
0120 | 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B FE FF 00 00
|
|
|
|
|
0130 | E1 42 3A 53 9D 94 8A 59 D3 1D 20 0D 4B 7C C5 8F
|
|
|
|
|
0140 | 76 38 0E DC F0 90 A9 3A 02 4C DF 0C 01 D9 5C 2B
|
|
|
|
|
0150 | 1B 33 6C E1 9D 2B 7A 5D CC 3A 0D 87 9D 34 88 00
|
|
|
|
|
0160 | 6C 2E A9 73 44 FB FE A5 AF 18 DF 21 78 08 67 A1
|
|
|
|
|
0170 | 5C 9C 87 AB DF B5 34 99 CC 37 FB F6 57 42 33 F4
|
|
|
|
|
0180 | 3C 08 29 0D 29 28 F3 75 57 5C D5 53 87 22 81 23
|
|
|
|
|
0190 | C1 4A 5A B1 8A F9 9B A0 E1 BF CD C8 1A DA 12 9A
|
|
|
|
|
01A0 | A4 31 1E C8 13 68 FC A5 74 36 15 AE 2B 52 27 D9
|
|
|
|
|
01B0 | C3 47 15 81 53 FC B0 62 E6 C1 82 DF BC 68 A6 2B
|
|
|
|
|
01C0 | 11 DD 42 EB 57 8D A8 1E 6C 07 34 2C 20 21 35 69
|
|
|
|
|
01D0 | D3 12 36 0D 0F 80 2E 8D 9E E0 1A 61 10 81 C1 C6
|
|
|
|
|
01E0 | 82 C4 21 83 70 F0 E0 73 D6 13 8D BE 6E 0C 09 DC
|
|
|
|
|
01F0 | 07 AE ED 43 0A 6D 96 5E 3C 5B 3F 4E 36 27 CA 8F
|
|
|
|
|
0200 | 1C CB BA A2 07 90 C8 4F 12 4B 81 54 58 D1 23 D4
|
|
|
|
|
0210 | 5B BE AA D1 91 DC B2 94 64 6B FF 46 A3 74 1F 5B
|
|
|
|
|
0220 | 43 12 C8 0F E9 93 C4 E1 47 79 C3 DC 2A 0F D0 00
|
|
|
|
|
0230 | 85 90 A2 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 = BA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE00010067409202B2D24664CA1A3CFF</code> <code>2EA1C56C8B428EA8AFE9552870366AE9</code> <code>9142CEA27F6E013DA6CE86221FFA5B56</code> <code>716A8DD955058F30CC63A3C225987203</code> <code>EF629DF95B69DD7E363E9B8E7431930C</code> <code>AAFC15BE11880E8DFA81CD4074532E0E</code> <code>634D7D2D127ECDABF432DE36640767A6</code> <code>AFD010B092632EA434A4A05ABAA388E7</code> <code>BA52BC5BFC85A8500216671EE3CA7398</code> <code>A3EC208176CDA3D8A17C2F4A8E7352CF</code> <code>DD4DC6C5025EC6A9453DEF5715322AA5</code> <code>89E506154074994C724E922ECE1B7907</code> <code>BF3DD95FE5DC069BFE72E791A1E8E4D4</code> <code>F5CB38F79C5E619ACA32F49D49B26FDF</code> <code>656085037803BED1DAF2EC623AEF9867</code> <code>BB78DEB94ACC676D402EA0141915AE29</code><br> <code>3E50ED3B</code></td>
|
|
|
|
|
<td><code>FEFF0000E1423A539D948A59D31D200D</code> <code>4B7CC58F76380EDCF090A93A024CDF0C</code> <code>01D95C2B1B336CE19D2B7A5DCC3A0D87</code> <code>9D3488006C2EA97344FBFEA5AF18DF21</code> <code>780867A15C9C87ABDFB53499CC37FBF6</code> <code>574233F43C08290D2928F375575CD553</code> <code>87228123C14A5AB18AF99BA0E1BFCDC8</code> <code>1ADA129AA4311EC81368FCA5743615AE</code> <code>2B5227D9C347158153FCB062E6C182DF</code> <code>BC68A62B11DD42EB578DA81E6C07342C</code> <code>20213569D312360D0F802E8D9EE01A61</code> <code>1081C1C682C4218370F0E073D6138DBE</code> <code>6E0C09DC07AEED430A6D965E3C5B3F4E</code> <code>3627CA8F1CCBBAA20790C84F124B8154</code> <code>58D123D45BBEAAD191DCB294646BFF46</code> <code>A3741F5B4312C80FE993C4E14779C3DC</code><br> <code>2A0FD000</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>2788A266</code> (1721927719 in decimal)</td>
|
|
|
|
|
<td><code>8590A266</code> (1721929861 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BA
|
|
|
|
|
<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 = 4FC6E364722AF1B09F0E67F99417FB9D01696C9964E96D5E005AFCA193FEE6AF3244493557F7398FF0603F8A9F0B5085038D0CB19137C1A818E37B6F24D581B35D28A7E87111849E65A304603596E01D0146C675CB6F27C2A593DF773DCACF13EB0CAB93BE44EBBB539B2F761057E36747D452AB9AFF3ECCEB848B9F6733A9E6FDCB8058208FC0FCB60375705B92659E49D3ECBE42B0E6CD4A2F94740B0186DEE9AF5D3A66F51FB606D423D7F75C7596657006EB0A6670F64EA7AA38310F0F59B49C88064356DF9D9D9D4A914BEABCB7CDDCA9BAE4919F8C5AED04AC552C8B5D6D56F66B80BD9F0E5ECE70F2AEF7C72007BBD0812908D2760E1DDEEA11742B3F</code></pre>
|
|
|
|
|
<pre><code>b = 664DFD427B63E3EE79EFAAED1F93B8D1F7618D5BC9EA96D1336BF949671FD574B373EA0094B4D3706E52B859C4C8C2B4A19DCF54BE54288C3482254D6F3C943405120EBCD82A3584EF18DDF4CB29ACAE679A5D2F9A66BE9681E322093618DCB00FCD6BB8FD162C0DEBD8D536DCD153A18729309098FAE7A2F88216D2E85A69CCDBB029F9445D7CBA61E07B10DCA5E2DDFC225E0F48DCF9894F0A1156581EA7E8DCA6AC795864254AE50AA078FCFF479AB50B300C9305616D4F903B15C91F4DE1177DF78416F9C4A8249DEE5C0B9043A509CEBB93DD16607E023720512AD579EBB97A3F769117DB7D1D850E61D2D2CD11313BA2CBFCE20EC2E70BB25028994FBF</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 = 35FE84F9813D7991C97A1C570369C1F36D02218D03A985DED79734FCB3FD8C28642D964DDA0BAB0933F0862F4E26B5608DF1534866A5D0D7B8846E4EAC4187E4147DD750FE6837DE38F8C20F5BC68BDD6F33D992C738BF10A07799F8E56133633B23B2623632872D3880587AD5F56237F4A9A6BF6F572A766DDF64082B3A154B4FA3E28EB5BE5551B43481C200FE2C7C0E725659637613D29059B279DFB2BCA34B51598FA8D5D1AD8A7B19F466A187D237D18AE476300D8AF5274BDFAC17EDC89A62C0E76D7D96E3B7AE6311221371E701E8D1F775985BD58D8F93B06112DE2F77136FC35C299594F1E0226E1464CC4C9F2E598E6E617C6A69BBD14B9DC1F9C6</code></pre>
|
|
|
|
|
<pre><code>g_b = 05354DCA9AB51D8269F671246B9348819F09B3B9277BF3B56C839134610981632383BC24125794EF5EDB45135343DC24122F0B9334026D054C5C60DE07B86E0DD48F5A9D7D221F64FD01A9E3EF425CE98E6DC74FE800EAF28D8315D12094A1AA3448C43C183EF4D6272765ECDD6B694737062DCD55F1F1AE443B1D22B0D97AD56A9F49616B7BAEED6A6582BA61A1EEB628A3B15AB199772973E1090ABEFF8C3671DB7EA305F72CE409815BC4A89D8EA6BA48786E16E5DA2CDD06F054C78D5E532B1C642BE8071D82EBFE1F43217396030651B50C683131E0000FB13F6951C64CE291E77E9FDBC92CFDB64865D13AFDF81CA37D1A1A561CCE717BEA06C513CD4A</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 D5 49 52 34 D2 F9 4E 3F 02 4B DF 6D
|
|
|
|
|
0010 | EF 52 10 8B 91 CE 65 C0 BC 19 5D 9A 0A 3F 41 56
|
|
|
|
|
0020 | AA 51 1B AA 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 35 FE 84 F9 81 3D 79 91 C9 7A 1C 57 03 69 C1 F3
|
|
|
|
|
0040 | 6D 02 21 8D 03 A9 85 DE D7 97 34 FC B3 FD 8C 28
|
|
|
|
|
0050 | 64 2D 96 4D DA 0B AB 09 33 F0 86 2F 4E 26 B5 60
|
|
|
|
|
0060 | 8D F1 53 48 66 A5 D0 D7 B8 84 6E 4E AC 41 87 E4
|
|
|
|
|
0070 | 14 7D D7 50 FE 68 37 DE 38 F8 C2 0F 5B C6 8B DD
|
|
|
|
|
0080 | 6F 33 D9 92 C7 38 BF 10 A0 77 99 F8 E5 61 33 63
|
|
|
|
|
0090 | 3B 23 B2 62 36 32 87 2D 38 80 58 7A D5 F5 62 37
|
|
|
|
|
00A0 | F4 A9 A6 BF 6F 57 2A 76 6D DF 64 08 2B 3A 15 4B
|
|
|
|
|
00B0 | 4F A3 E2 8E B5 BE 55 51 B4 34 81 C2 00 FE 2C 7C
|
|
|
|
|
00C0 | 0E 72 56 59 63 76 13 D2 90 59 B2 79 DF B2 BC A3
|
|
|
|
|
00D0 | 4B 51 59 8F A8 D5 D1 AD 8A 7B 19 F4 66 A1 87 D2
|
|
|
|
|
00E0 | 37 D1 8A E4 76 30 0D 8A F5 27 4B DF AC 17 ED C8
|
|
|
|
|
00F0 | 9A 62 C0 E7 6D 7D 96 E3 B7 AE 63 11 22 13 71 E7
|
|
|
|
|
0100 | 01 E8 D1 F7 75 98 5B D5 8D 8F 93 B0 61 12 DE 2F
|
|
|
|
|
0110 | 77 13 6F C3 5C 29 95 94 F1 E0 22 6E 14 64 CC 4C
|
|
|
|
|
0120 | 9F 2E 59 8E 6E 61 7C 6A 69 BB D1 4B 9D C1 F9 C6</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 B8 1E E8 98 8B A0 21 46 C0 B5 86 ED
|
|
|
|
|
0010 | 6E 48 FA F7 71 C1 F5 53 57 41 48 71 77 74 D4 C4
|
|
|
|
|
0020 | 99 5C F5 44 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 05 35 4D CA 9A B5 1D 82 69 F6 71 24 6B 93 48 81
|
|
|
|
|
0040 | 9F 09 B3 B9 27 7B F3 B5 6C 83 91 34 61 09 81 63
|
|
|
|
|
0050 | 23 83 BC 24 12 57 94 EF 5E DB 45 13 53 43 DC 24
|
|
|
|
|
0060 | 12 2F 0B 93 34 02 6D 05 4C 5C 60 DE 07 B8 6E 0D
|
|
|
|
|
0070 | D4 8F 5A 9D 7D 22 1F 64 FD 01 A9 E3 EF 42 5C E9
|
|
|
|
|
0080 | 8E 6D C7 4F E8 00 EA F2 8D 83 15 D1 20 94 A1 AA
|
|
|
|
|
0090 | 34 48 C4 3C 18 3E F4 D6 27 27 65 EC DD 6B 69 47
|
|
|
|
|
00A0 | 37 06 2D CD 55 F1 F1 AE 44 3B 1D 22 B0 D9 7A D5
|
|
|
|
|
00B0 | 6A 9F 49 61 6B 7B AE ED 6A 65 82 BA 61 A1 EE B6
|
|
|
|
|
00C0 | 28 A3 B1 5A B1 99 77 29 73 E1 09 0A BE FF 8C 36
|
|
|
|
|
00D0 | 71 DB 7E A3 05 F7 2C E4 09 81 5B C4 A8 9D 8E A6
|
|
|
|
|
00E0 | BA 48 78 6E 16 E5 DA 2C DD 06 F0 54 C7 8D 5E 53
|
|
|
|
|
00F0 | 2B 1C 64 2B E8 07 1D 82 EB FE 1F 43 21 73 96 03
|
|
|
|
|
0100 | 06 51 B5 0C 68 31 31 E0 00 0F B1 3F 69 51 C6 4C
|
|
|
|
|
0110 | E2 91 E7 7E 9F DB C9 2C FD B6 48 65 D1 3A FD F8
|
|
|
|
|
0120 | 1C A3 7D 1A 1A 56 1C CE 71 7B EA 06 C5 13 CD 4A</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 = BA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BA
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE00010035FE84F9813D7991C97A1C57</code> <code>0369C1F36D02218D03A985DED79734FC</code> <code>B3FD8C28642D964DDA0BAB0933F0862F</code> <code>4E26B5608DF1534866A5D0D7B8846E4E</code> <code>AC4187E4147DD750FE6837DE38F8C20F</code> <code>5BC68BDD6F33D992C738BF10A07799F8</code> <code>E56133633B23B2623632872D3880587A</code> <code>D5F56237F4A9A6BF6F572A766DDF6408</code> <code>2B3A154B4FA3E28EB5BE5551B43481C2</code> <code>00FE2C7C0E725659637613D29059B279</code> <code>DFB2BCA34B51598FA8D5D1AD8A7B19F4</code> <code>66A187D237D18AE476300D8AF5274BDF</code> <code>AC17EDC89A62C0E76D7D96E3B7AE6311</code> <code>221371E701E8D1F775985BD58D8F93B0</code> <code>6112DE2F77136FC35C299594F1E0226E</code> <code>1464CC4C9F2E598E6E617C6A69BBD14B</code><br> <code>9DC1F9C6</code></td>
|
|
|
|
|
<td><code>FE00010005354DCA9AB51D8269F67124</code> <code>6B9348819F09B3B9277BF3B56C839134</code> <code>610981632383BC24125794EF5EDB4513</code> <code>5343DC24122F0B9334026D054C5C60DE</code> <code>07B86E0DD48F5A9D7D221F64FD01A9E3</code> <code>EF425CE98E6DC74FE800EAF28D8315D1</code> <code>2094A1AA3448C43C183EF4D6272765EC</code> <code>DD6B694737062DCD55F1F1AE443B1D22</code> <code>B0D97AD56A9F49616B7BAEED6A6582BA</code> <code>61A1EEB628A3B15AB199772973E1090A</code> <code>BEFF8C3671DB7EA305F72CE409815BC4</code> <code>A89D8EA6BA48786E16E5DA2CDD06F054</code> <code>C78D5E532B1C642BE8071D82EBFE1F43</code> <code>217396030651B50C683131E0000FB13F</code> <code>6951C64CE291E77E9FDBC92CFDB64865</code> <code>D13AFDF81CA37D1A1A561CCE717BEA06</code><br> <code>C513CD4A</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 = BA0D89B5D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BA
|
|
|
|
|
<!-- 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 = 54B64366D5495234D2F94E3F024BDF6DEF52108B91CE65C0BC195D9A0A3F4156AA511BAA0000000000000000FE00010035FE84F9813D7991C97A1C570369C1F36D02218D03A985DED79734FCB3FD8C28642D964DDA0BAB0933F0862F4E26B5608DF1534866A5D0D7B8846E4EAC4187E4147DD750FE6837DE38F8C20F5BC68BDD6F33D992C738BF10A07799F8E56133633B23B2623632872D3880587AD5F56237F4A9A6BF6F572A766DDF64082B3A154B4FA3E28EB5BE5551B43481C200FE2C7C0E725659637613D29059B279DFB2BCA34B51598FA8D5D1AD8A7B19F466A187D237D18AE476300D8AF5274BDFAC17EDC89A62C0E76D7D96E3B7AE6311221371E701E8D1F775985BD58D8F93B06112DE2F77136FC35C299594F1E0226E1464CC4C9F2E598E6E617C6A69BBD14B9DC1F9C6
|
|
|
|
|
padding = E0DE2B81437D0447A05DFE05
|
|
|
|
|
tmp_aes_key = D3922C50D6EF99ADFD87C8BDDFFD4CDA1C3D6316A316CF3C8DBD1F46DF79D162
|
|
|
|
|
tmp_aes_iv = F80B1F841E55718E97B0730CBC1A88C5686A4CA91926680348AD74FB86091F3A</code></pre>
|
|
|
|
|
<pre><code>data = 54B64366B81EE8988BA02146C0B586ED6E48FAF771C1F553574148717774D4C4995CF5440000000000000000FE00010005354DCA9AB51D8269F671246B9348819F09B3B9277BF3B56C839134610981632383BC24125794EF5EDB45135343DC24122F0B9334026D054C5C60DE07B86E0DD48F5A9D7D221F64FD01A9E3EF425CE98E6DC74FE800EAF28D8315D12094A1AA3448C43C183EF4D6272765ECDD6B694737062DCD55F1F1AE443B1D22B0D97AD56A9F49616B7BAEED6A6582BA61A1EEB628A3B15AB199772973E1090ABEFF8C3671DB7EA305F72CE409815BC4A89D8EA6BA48786E16E5DA2CDD06F054C78D5E532B1C642BE8071D82EBFE1F43217396030651B50C683131E0000FB13F6951C64CE291E77E9FDBC92CFDB64865D13AFDF81CA37D1A1A561CCE717BEA06C513CD4A
|
|
|
|
|
padding = 713B2E085D8855979577F563
|
|
|
|
|
tmp_aes_key = C7662A7CD11630CAE946C0E8C90E28B8291DA1C29130D81D8341A55D47C1F4BE
|
|
|
|
|
tmp_aes_iv = F69ACF2331B4EDB15931C58AF8A570F560D6281C7EE7C2F40868B76A6DAA2EFD</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 = EE128F62F0C4E93570510E0F0D896213D3CC0FA48AC4E4250C145F2B5F4E79EE574E3105DAFA646DEA4E7DCEAA2CB4CB29CD09A606E3E61E1C07D13EF6415331F0681A10307B2022A751BD2A0EAF278B7E65707F7B6525A0ED7F7C9982763CB580D3EC10967017ABC2FEEE438E85E1F39AD4EC26E7CCD5D0BC3A8F541C8F58D399507E810C6605EAD3F19F6BD7F4D058EC85796EC4F3EC4B1A859983A3CD3ABC8D8BFFE78439F4176B6F6BF611696ED41378235A6BCF5BDED89A145A3AB54C6D6BCA7CC20DBF11D12D0AA36992E36C281B5D45B70C36E0CB672DB63631B948AA58DFC0CDDF27BBFF33836319044266B10A73678B1BC5660BD2D913A60B4FF50EFADD220F934EA70E7A64BF115D7F955D4DE8FE668291E57751FE5EA9942D7611A9800D55D0743000337D32EBD658F20F1141DA206FD8018003F1A344F5B7EA8C6B108A993D9613BADC4B97B9B49FE4FD</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = C9647315637804559FC08818538119083A6625746B895EA5F06A90A911F850B4DE88623B62E6319080BB17857735195377CB70C5B72AFE4F5C97483F245B49DD63694A0BD4CC98239F505C4DF785A8744C1DB7BBA34B9A222E86F9EFF68CF374F70DF1F6ECD900CA4BA626D7FE6E16804E2B94431CB60A4F67CAA6637141ED25FAD81ED3D97961378D60F3ADBB472A674A690B4ED2A52E91D176644A01B74E423ED5838D28F364DE64E152F426B5FEAD53223D240010D68C021C2EA4BBE45A0CA21DFD1DC9B9B0AA1D506C3332342AECCF5174759E37034D3139651061B91B345B66F51612F8FFD864FF2DE15463584BDAC0B7900FAC0A2BCC5A0328955A4EDD92146C55488D03F7D28067C5C4007B4D35090662B73A1EBEE30BB7EE27A8F97EFCDEEBF948CACE605BFDDAC000F87A9AE0D5EAC659BEFD46C6270B0483E00DE7C2299F65507ED4994FA8312A3EDD9173</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 44 79 09 00 27 88 A2 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 D5 49 52 34 D2 F9 4E 3F
|
|
|
|
|
0020 | 02 4B DF 6D EF 52 10 8B 91 CE 65 C0 BC 19 5D 9A
|
|
|
|
|
0030 | 0A 3F 41 56 AA 51 1B AA FE 50 01 00 EE 12 8F 62
|
|
|
|
|
0040 | F0 C4 E9 35 70 51 0E 0F 0D 89 62 13 D3 CC 0F A4
|
|
|
|
|
0050 | 8A C4 E4 25 0C 14 5F 2B 5F 4E 79 EE 57 4E 31 05
|
|
|
|
|
0060 | DA FA 64 6D EA 4E 7D CE AA 2C B4 CB 29 CD 09 A6
|
|
|
|
|
0070 | 06 E3 E6 1E 1C 07 D1 3E F6 41 53 31 F0 68 1A 10
|
|
|
|
|
0080 | 30 7B 20 22 A7 51 BD 2A 0E AF 27 8B 7E 65 70 7F
|
|
|
|
|
0090 | 7B 65 25 A0 ED 7F 7C 99 82 76 3C B5 80 D3 EC 10
|
|
|
|
|
00A0 | 96 70 17 AB C2 FE EE 43 8E 85 E1 F3 9A D4 EC 26
|
|
|
|
|
00B0 | E7 CC D5 D0 BC 3A 8F 54 1C 8F 58 D3 99 50 7E 81
|
|
|
|
|
00C0 | 0C 66 05 EA D3 F1 9F 6B D7 F4 D0 58 EC 85 79 6E
|
|
|
|
|
00D0 | C4 F3 EC 4B 1A 85 99 83 A3 CD 3A BC 8D 8B FF E7
|
|
|
|
|
00E0 | 84 39 F4 17 6B 6F 6B F6 11 69 6E D4 13 78 23 5A
|
|
|
|
|
00F0 | 6B CF 5B DE D8 9A 14 5A 3A B5 4C 6D 6B CA 7C C2
|
|
|
|
|
0100 | 0D BF 11 D1 2D 0A A3 69 92 E3 6C 28 1B 5D 45 B7
|
|
|
|
|
0110 | 0C 36 E0 CB 67 2D B6 36 31 B9 48 AA 58 DF C0 CD
|
|
|
|
|
0120 | DF 27 BB FF 33 83 63 19 04 42 66 B1 0A 73 67 8B
|
|
|
|
|
0130 | 1B C5 66 0B D2 D9 13 A6 0B 4F F5 0E FA DD 22 0F
|
|
|
|
|
0140 | 93 4E A7 0E 7A 64 BF 11 5D 7F 95 5D 4D E8 FE 66
|
|
|
|
|
0150 | 82 91 E5 77 51 FE 5E A9 94 2D 76 11 A9 80 0D 55
|
|
|
|
|
0160 | D0 74 30 00 33 7D 32 EB D6 58 F2 0F 11 41 DA 20
|
|
|
|
|
0170 | 6F D8 01 80 03 F1 A3 44 F5 B7 EA 8C 6B 10 8A 99
|
|
|
|
|
0180 | 3D 96 13 BA DC 4B 97 B9 B4 9F E4 FD</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 24 5D 05 00 85 90 A2 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 B8 1E E8 98 8B A0 21 46
|
|
|
|
|
0020 | C0 B5 86 ED 6E 48 FA F7 71 C1 F5 53 57 41 48 71
|
|
|
|
|
0030 | 77 74 D4 C4 99 5C F5 44 FE 50 01 00 C9 64 73 15
|
|
|
|
|
0040 | 63 78 04 55 9F C0 88 18 53 81 19 08 3A 66 25 74
|
|
|
|
|
0050 | 6B 89 5E A5 F0 6A 90 A9 11 F8 50 B4 DE 88 62 3B
|
|
|
|
|
0060 | 62 E6 31 90 80 BB 17 85 77 35 19 53 77 CB 70 C5
|
|
|
|
|
0070 | B7 2A FE 4F 5C 97 48 3F 24 5B 49 DD 63 69 4A 0B
|
|
|
|
|
0080 | D4 CC 98 23 9F 50 5C 4D F7 85 A8 74 4C 1D B7 BB
|
|
|
|
|
0090 | A3 4B 9A 22 2E 86 F9 EF F6 8C F3 74 F7 0D F1 F6
|
|
|
|
|
00A0 | EC D9 00 CA 4B A6 26 D7 FE 6E 16 80 4E 2B 94 43
|
|
|
|
|
00B0 | 1C B6 0A 4F 67 CA A6 63 71 41 ED 25 FA D8 1E D3
|
|
|
|
|
00C0 | D9 79 61 37 8D 60 F3 AD BB 47 2A 67 4A 69 0B 4E
|
|
|
|
|
00D0 | D2 A5 2E 91 D1 76 64 4A 01 B7 4E 42 3E D5 83 8D
|
|
|
|
|
00E0 | 28 F3 64 DE 64 E1 52 F4 26 B5 FE AD 53 22 3D 24
|
|
|
|
|
00F0 | 00 10 D6 8C 02 1C 2E A4 BB E4 5A 0C A2 1D FD 1D
|
|
|
|
|
0100 | C9 B9 B0 AA 1D 50 6C 33 32 34 2A EC CF 51 74 75
|
|
|
|
|
0110 | 9E 37 03 4D 31 39 65 10 61 B9 1B 34 5B 66 F5 16
|
|
|
|
|
0120 | 12 F8 FF D8 64 FF 2D E1 54 63 58 4B DA C0 B7 90
|
|
|
|
|
0130 | 0F AC 0A 2B CC 5A 03 28 95 5A 4E DD 92 14 6C 55
|
|
|
|
|
0140 | 48 8D 03 F7 D2 80 67 C5 C4 00 7B 4D 35 09 06 62
|
|
|
|
|
0150 | B7 3A 1E BE E3 0B B7 EE 27 A8 F9 7E FC DE EB F9
|
|
|
|
|
0160 | 48 CA CE 60 5B FD DA C0 00 F8 7A 9A E0 D5 EA C6
|
|
|
|
|
0170 | 59 BE FD 46 C6 27 0B 04 83 E0 0D E7 C2 29 9F 65
|
|
|
|
|
0180 | 50 7E D4 99 4F A8 31 2A 3E DD 91 73</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>447909002788A266</code></td>
|
|
|
|
|
<td><code>245D05008590A266</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>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE500100EE128F62F0C4E93570510E0F</code> <code>0D896213D3CC0FA48AC4E4250C145F2B</code> <code>5F4E79EE574E3105DAFA646DEA4E7DCE</code> <code>AA2CB4CB29CD09A606E3E61E1C07D13E</code> <code>F6415331F0681A10307B2022A751BD2A</code> <code>0EAF278B7E65707F7B6525A0ED7F7C99</code> <code>82763CB580D3EC10967017ABC2FEEE43</code> <code>8E85E1F39AD4EC26E7CCD5D0BC3A8F54</code> <code>1C8F58D399507E810C6605EAD3F19F6B</code> <code>D7F4D058EC85796EC4F3EC4B1A859983</code> <code>A3CD3ABC8D8BFFE78439F4176B6F6BF6</code> <code>11696ED41378235A6BCF5BDED89A145A</code> <code>3AB54C6D6BCA7CC20DBF11D12D0AA369</code> <code>92E36C281B5D45B70C36E0CB672DB636</code> <code>31B948AA58DFC0CDDF27BBFF33836319</code> <code>044266B10A73678B1BC5660BD2D913A6</code> <code>0B4FF50EFADD220F934EA70E7A64BF11</code> <code>5D7F955D4DE8FE668291E57751FE5EA9</code> <code>942D7611A9800D55D0743000337D32EB</code> <code>D658F20F1141DA206FD8018003F1A344</code> <code>F5B7EA8C6B108A993D9613BADC4B97B9</code><br> <code>B49FE4FD</code></td>
|
|
|
|
|
<td><code>FE500100C9647315637804559FC08818</code> <code>538119083A6625746B895EA5F06A90A9</code> <code>11F850B4DE88623B62E6319080BB1785</code> <code>7735195377CB70C5B72AFE4F5C97483F</code> <code>245B49DD63694A0BD4CC98239F505C4D</code> <code>F785A8744C1DB7BBA34B9A222E86F9EF</code> <code>F68CF374F70DF1F6ECD900CA4BA626D7</code> <code>FE6E16804E2B94431CB60A4F67CAA663</code> <code>7141ED25FAD81ED3D97961378D60F3AD</code> <code>BB472A674A690B4ED2A52E91D176644A</code> <code>01B74E423ED5838D28F364DE64E152F4</code> <code>26B5FEAD53223D240010D68C021C2EA4</code> <code>BBE45A0CA21DFD1DC9B9B0AA1D506C33</code> <code>32342AECCF5174759E37034D31396510</code> <code>61B91B345B66F51612F8FFD864FF2DE1</code> <code>5463584BDAC0B7900FAC0A2BCC5A0328</code> <code>955A4EDD92146C55488D03F7D28067C5</code> <code>C4007B4D35090662B73A1EBEE30BB7EE</code> <code>27A8F97EFCDEEBF948CACE605BFDDAC0</code> <code>00F87A9AE0D5EAC659BEFD46C6270B04</code> <code>83E00DE7C2299F65507ED4994FA8312A</code><br> <code>3EDD9173</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 = 4E9D7310E7DD44DC1811D9843D91C8D73B77CC8E3670787FFFFC330929B0F94033B71364C7DAC87250FCF63429DBA44334639B457CA99F84CBEB3F3E8D9E0EFA458009B0510540C9AA18BC71CEAF7726912F7C334C246BFD5CF63EFCC282F286E532A866CA08CBBCBF484B260769627187A5524B3843F9B2E14009565AFC8282F507822121349062019E3804C3DE38AA6507CA4E6AA3CC2B7739B76215B9805C7F70DB4F9C8B558B15AEB1168280F17B03823DDB0B9357D172C3D896EE46080CF38DC75636B5033A479315DA2F9DB1F968EB82CE646A6A39BF8AA880595E879C0BD447B3BB368241033C7FD443F57C7046ABDD68683D7CDDC0667DFE06D247E8</code></pre>
|
|
|
|
|
<pre><code>auth_key = 91DB36AD929C40B4E43312AA240BE2B4169B0E8ECAA41B4BE66F346CAD9D0D8030E1D44E0E243BFCF11556C09CB440B31FAB8C964F781E7B1788D3668EFC88065B1643E007ECE7D11D7BA6D37CB4115197728332170936833E5BB3B23B1ED5FB0B9527DA7EDF69394543596E062621657101AB58F99E465941F42DF26E53AA76776D713AFE6558AA20C37CD464E22659A2149B828F39FDE6F2E95539C21EF263D134A153B037386473FDE9A03D992F0EC1830A048E017E680BD9D79B592DE19138B8AAFF2E9E4AB24BB81B563C1F5903E933B675613B3CAB2AECAF8F94D715E5F3AE2FF769083A29BE57A2F50B86DF5A19CC9AF1D2EDD602E4702575A62DB260</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 40 4B A0 28 88 A2 66
|
|
|
|
|
0010 | 64 00 00 00 34 F7 CB 3B D5 49 52 34 D2 F9 4E 3F
|
|
|
|
|
0020 | 02 4B DF 6D EF 52 10 8B 91 CE 65 C0 BC 19 5D 9A
|
|
|
|
|
0030 | 0A 3F 41 56 AA 51 1B AA 9B 13 77 69 10 28 36 EE
|
|
|
|
|
0040 | D5 85 94 3C 56 A3 F3 AB</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 4C 17 D8 85 90 A2 66
|
|
|
|
|
0010 | 94 00 00 00 34 F7 CB 3B B8 1E E8 98 8B A0 21 46
|
|
|
|
|
0020 | C0 B5 86 ED 6E 48 FA F7 71 C1 F5 53 57 41 48 71
|
|
|
|
|
0030 | 77 74 D4 C4 99 5C F5 44 B5 4F 21 9D 5F 9F 6F 94
|
|
|
|
|
0040 | DA A5 B4 AC 22 AD 7A 2C</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>01404BA02888A266</code></td>
|
|
|
|
|
<td><code>014C17D88590A266</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>64000000</code> (100 in decimal)</td>
|
|
|
|
|
<td><code>94000000</code> (148 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>D5495234D2F94E3F024BDF6DEF52108B</code></td>
|
|
|
|
|
<td><code>B81EE8988BA02146C0B586ED6E48FAF7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>91CE65C0BC195D9A0A3F4156AA511BAA</code></td>
|
|
|
|
|
<td><code>71C1F553574148717774D4C4995CF544</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>9B137769102836EED585943C56A3F3AB</code></td>
|
|
|
|
|
<td><code>B54F219D5F9F6F94DAA5B4AC22AD7A2C</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>
|
|
|
|
|