|
|
|
@ -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 08 EF 08 00 9F A1 38 67
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE F3 C6 F3 84 6F CA 4D 6D
|
|
|
|
|
0020 | 5F 17 DC 5D C0 1C 36 7F</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 D8 7F 03 00 DD A6 38 67
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE F2 FF EB DA 55 A0 62 61
|
|
|
|
|
0020 | 90 B6 57 AC CD F3 9C 05</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>08EF08009FA13867</code></td>
|
|
|
|
|
<td><code>D87F0300DDA63867</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>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</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 D0 30 9F 9F A1 38 67
|
|
|
|
|
0010 | 50 00 00 00 63 24 16 05 F3 C6 F3 84 6F CA 4D 6D
|
|
|
|
|
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
|
|
|
|
|
0030 | F8 CD 69 F5 8E 1F 39 63 08 27 55 9F D2 CF 8E 36
|
|
|
|
|
0040 | 15 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 30 5D EC DD A6 38 67
|
|
|
|
|
0010 | 50 00 00 00 63 24 16 05 F2 FF EB DA 55 A0 62 61
|
|
|
|
|
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
|
|
|
|
|
0030 | D9 43 AB 98 93 64 1F B4 08 15 4F 99 C1 AD 76 59
|
|
|
|
|
0040 | B7 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
|
|
|
|
|
0050 | 85 1D 9D D0 A5 B7 F7 09 35 5F C3 0B 21 6B E8 6C
|
|
|
|
|
0060 | 02 2B B4 C3</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
@ -132,7 +132,7 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01D0309F9FA13867</code></td>
|
|
|
|
|
<td><code>01305DECDDA63867</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>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>0827559FD2CF8E3615000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2834347268273747477</td>
|
|
|
|
|
<td><code>08154F99C1AD7659B7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1535615055074580919</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 = 2834347268273747477</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2834347268273747477 = 1503116977 * 1885646501</code></p>
|
|
|
|
|
<pre><code>p = 1503116977
|
|
|
|
|
q = 1885646501</code></pre>
|
|
|
|
|
<pre><code>pq = 1535615055074580919</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1535615055074580919 = 1164798461 * 1318352579</code></p>
|
|
|
|
|
<pre><code>p = 1164798461
|
|
|
|
|
q = 1318352579</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 27 55 9F D2 CF 8E 36 15 00 00 00
|
|
|
|
|
0010 | 04 59 97 BE B1 00 00 00 04 70 64 AE A5 00 00 00
|
|
|
|
|
0020 | F3 C6 F3 84 6F CA 4D 6D 5F 17 DC 5D C0 1C 36 7F
|
|
|
|
|
0030 | BC D0 94 5F A8 89 89 60 F8 CD 69 F5 8E 1F 39 63
|
|
|
|
|
0040 | 61 FF 7B EC 20 C4 17 99 68 13 23 5C EB E6 96 7B
|
|
|
|
|
0050 | 22 6D E6 00 C2 92 C2 63 29 C4 F3 C4 BD 52 92 CE
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 15 4F 99 C1 AD 76 59 B7 00 00 00
|
|
|
|
|
0010 | 04 45 6D 69 FD 00 00 00 04 4E 94 76 C3 00 00 00
|
|
|
|
|
0020 | F2 FF EB DA 55 A0 62 61 90 B6 57 AC CD F3 9C 05
|
|
|
|
|
0030 | C8 97 E4 83 8C 1A 47 33 D9 43 AB 98 93 64 1F B4
|
|
|
|
|
0040 | 11 83 DF 59 14 4A 45 26 F1 B0 E6 C9 A4 B2 7C 6C
|
|
|
|
|
0050 | 80 36 BD EE 0C 5C 7A D7 07 F6 94 1A AE C9 28 8E
|
|
|
|
|
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 = 1885646501</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>0827559FD2CF8E3615000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2834347268273747477</td>
|
|
|
|
|
<td><code>08154F99C1AD7659B7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1535615055074580919</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>045997BEB1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1503116977</td>
|
|
|
|
|
<td><code>04456D69FD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1164798461</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>047064AEA5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1885646501</td>
|
|
|
|
|
<td><code>044E9476C3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1318352579</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>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>61FF7BEC20C417996813235CEBE6967B</code> <code>226DE600C292C26329C4F3C4BD5292CE</code></td>
|
|
|
|
|
<td><code>1183DF59144A4526F1B0E6C9A4B27C6C</code> <code>8036BDEE0C5C7AD707F6941AAEC9288E</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1885646501</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 = 955FF5A90827559FD2CF8E3615000000045997BEB1000000047064AEA5000000F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396361FF7BEC20C417996813235CEBE6967B226DE600C292C26329C4F3C4BD5292CE02000000
|
|
|
|
|
random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD01196222B40B1A2C2E4F594A36149A2E3E13F52F29CE2258CF974A09D3CD69CF128A4588CA8C12A5ED1389CBB519ECF2DD7F351C5CC4D865428C5416E7F96AF3</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A908154F99C1AD7659B700000004456D69FD000000044E9476C3000000F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB41183DF59144A4526F1B0E6C9A4B27C6C8036BDEE0C5C7AD707F6941AAEC9288E02000000
|
|
|
|
|
random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611AF1FA618B2943619E8AA74B88439ED0870657660BC1167DFF5A7BBA65DC878A3F677C3E8D9DBCE966EBEADB069E11FCA0DA8EEA1F411182BAE338F54BCE44AE6</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 = 1413B01C2BDE24F106079EF6237383E7BFBE8354664CB7F8832D9EFDE180C882334181021885B5C9612012BCFD851F5E197678A4B0EFADB31EEC781421857814D6B677550B12D17DD0DC11D09367F448E90ABD338A25870AD52F3C992F17BFE9BB3A4BA6555585CD2D936896CA3F2AF9C98FF8794ECE5B7506305A5CB6DCDC50C91BAE3CD2520146807C96F9255455E32E8BCFDE340DDE00B69FF98F83C799F241532FBE70F428C2DB502B99B2CFDDC9F9AA65A8E31CF0964A134498E6A8DF15CDB78D588487A388851D178A2CBB9EC836282C6DE4C18C1714DAF616CF24C8C6154ECA93ACF37ABED5281211EC56FEA50061B47FAB1B2546D34D0456917A3D5A</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 350F55A03139C665B4C03D92B4E02D81AB71F6B7BE05CADBFAE678223B0DBB53192D60A9AD6A9E1A36EC9EE33A69B7ACD965E488C3ECB859DC7DCAF9303F24BA38556EC7584AE5448A979BF70F031EBD219F3795209A2D07A4E09DEF29638458CF1A3798D59483C8F7C8FA0D24FE31676E8AE9D8AB10AA7C0702A16CC2E096C861700D073E5131E716A98FE1051AD58526F1F151ADADD2E19F537E716CD5558330DEDDE1D49BE50AC20CE6A040823EB497037B49FCA16549479A4E7AF3D349B907E71FD32E675B487CB7995833619B8185F1DCDAFD7309302B0829C18B049CC796F4DC7A79CE49D614A92304D67EA44A1B57E70FA89441BDE0DA58484AACB666</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 84 99 0D 00 9F A1 38 67
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 F3 C6 F3 84 6F CA 4D 6D
|
|
|
|
|
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
|
|
|
|
|
0030 | F8 CD 69 F5 8E 1F 39 63 04 59 97 BE B1 00 00 00
|
|
|
|
|
0040 | 04 70 64 AE A5 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 14 13 B0 1C 2B DE 24 F1 06 07 9E F6
|
|
|
|
|
0060 | 23 73 83 E7 BF BE 83 54 66 4C B7 F8 83 2D 9E FD
|
|
|
|
|
0070 | E1 80 C8 82 33 41 81 02 18 85 B5 C9 61 20 12 BC
|
|
|
|
|
0080 | FD 85 1F 5E 19 76 78 A4 B0 EF AD B3 1E EC 78 14
|
|
|
|
|
0090 | 21 85 78 14 D6 B6 77 55 0B 12 D1 7D D0 DC 11 D0
|
|
|
|
|
00A0 | 93 67 F4 48 E9 0A BD 33 8A 25 87 0A D5 2F 3C 99
|
|
|
|
|
00B0 | 2F 17 BF E9 BB 3A 4B A6 55 55 85 CD 2D 93 68 96
|
|
|
|
|
00C0 | CA 3F 2A F9 C9 8F F8 79 4E CE 5B 75 06 30 5A 5C
|
|
|
|
|
00D0 | B6 DC DC 50 C9 1B AE 3C D2 52 01 46 80 7C 96 F9
|
|
|
|
|
00E0 | 25 54 55 E3 2E 8B CF DE 34 0D DE 00 B6 9F F9 8F
|
|
|
|
|
00F0 | 83 C7 99 F2 41 53 2F BE 70 F4 28 C2 DB 50 2B 99
|
|
|
|
|
0100 | B2 CF DD C9 F9 AA 65 A8 E3 1C F0 96 4A 13 44 98
|
|
|
|
|
0110 | E6 A8 DF 15 CD B7 8D 58 84 87 A3 88 85 1D 17 8A
|
|
|
|
|
0120 | 2C BB 9E C8 36 28 2C 6D E4 C1 8C 17 14 DA F6 16
|
|
|
|
|
0130 | CF 24 C8 C6 15 4E CA 93 AC F3 7A BE D5 28 12 11
|
|
|
|
|
0140 | EC 56 FE A5 00 61 B4 7F AB 1B 25 46 D3 4D 04 56
|
|
|
|
|
0150 | 91 7A 3D 5A</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 B4 9A 03 00 DD A6 38 67
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 F2 FF EB DA 55 A0 62 61
|
|
|
|
|
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
|
|
|
|
|
0030 | D9 43 AB 98 93 64 1F B4 04 45 6D 69 FD 00 00 00
|
|
|
|
|
0040 | 04 4E 94 76 C3 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 35 0F 55 A0 31 39 C6 65 B4 C0 3D 92
|
|
|
|
|
0060 | B4 E0 2D 81 AB 71 F6 B7 BE 05 CA DB FA E6 78 22
|
|
|
|
|
0070 | 3B 0D BB 53 19 2D 60 A9 AD 6A 9E 1A 36 EC 9E E3
|
|
|
|
|
0080 | 3A 69 B7 AC D9 65 E4 88 C3 EC B8 59 DC 7D CA F9
|
|
|
|
|
0090 | 30 3F 24 BA 38 55 6E C7 58 4A E5 44 8A 97 9B F7
|
|
|
|
|
00A0 | 0F 03 1E BD 21 9F 37 95 20 9A 2D 07 A4 E0 9D EF
|
|
|
|
|
00B0 | 29 63 84 58 CF 1A 37 98 D5 94 83 C8 F7 C8 FA 0D
|
|
|
|
|
00C0 | 24 FE 31 67 6E 8A E9 D8 AB 10 AA 7C 07 02 A1 6C
|
|
|
|
|
00D0 | C2 E0 96 C8 61 70 0D 07 3E 51 31 E7 16 A9 8F E1
|
|
|
|
|
00E0 | 05 1A D5 85 26 F1 F1 51 AD AD D2 E1 9F 53 7E 71
|
|
|
|
|
00F0 | 6C D5 55 83 30 DE DD E1 D4 9B E5 0A C2 0C E6 A0
|
|
|
|
|
0100 | 40 82 3E B4 97 03 7B 49 FC A1 65 49 47 9A 4E 7A
|
|
|
|
|
0110 | F3 D3 49 B9 07 E7 1F D3 2E 67 5B 48 7C B7 99 58
|
|
|
|
|
0120 | 33 61 9B 81 85 F1 DC DA FD 73 09 30 2B 08 29 C1
|
|
|
|
|
0130 | 8B 04 9C C7 96 F4 DC 7A 79 CE 49 D6 14 A9 23 04
|
|
|
|
|
0140 | D6 7E A4 4A 1B 57 E7 0F A8 94 41 BD E0 DA 58 48
|
|
|
|
|
0150 | 4A AC B6 66</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 = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>84990D009FA13867</code></td>
|
|
|
|
|
<td><code>B49A0300DDA63867</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 = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>045997BEB1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1503116977</td>
|
|
|
|
|
<td><code>04456D69FD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1164798461</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>047064AEA5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1885646501</td>
|
|
|
|
|
<td><code>044E9476C3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1318352579</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 = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE0001001413B01C2BDE24F106079EF6</code> <code>237383E7BFBE8354664CB7F8832D9EFD</code> <code>E180C882334181021885B5C9612012BC</code> <code>FD851F5E197678A4B0EFADB31EEC7814</code> <code>21857814D6B677550B12D17DD0DC11D0</code> <code>9367F448E90ABD338A25870AD52F3C99</code> <code>2F17BFE9BB3A4BA6555585CD2D936896</code> <code>CA3F2AF9C98FF8794ECE5B7506305A5C</code> <code>B6DCDC50C91BAE3CD2520146807C96F9</code> <code>255455E32E8BCFDE340DDE00B69FF98F</code> <code>83C799F241532FBE70F428C2DB502B99</code> <code>B2CFDDC9F9AA65A8E31CF0964A134498</code> <code>E6A8DF15CDB78D588487A388851D178A</code> <code>2CBB9EC836282C6DE4C18C1714DAF616</code> <code>CF24C8C6154ECA93ACF37ABED5281211</code> <code>EC56FEA50061B47FAB1B2546D34D0456</code><br> <code>917A3D5A</code></td>
|
|
|
|
|
<td><code>FE000100350F55A03139C665B4C03D92</code> <code>B4E02D81AB71F6B7BE05CADBFAE67822</code> <code>3B0DBB53192D60A9AD6A9E1A36EC9EE3</code> <code>3A69B7ACD965E488C3ECB859DC7DCAF9</code> <code>303F24BA38556EC7584AE5448A979BF7</code> <code>0F031EBD219F3795209A2D07A4E09DEF</code> <code>29638458CF1A3798D59483C8F7C8FA0D</code> <code>24FE31676E8AE9D8AB10AA7C0702A16C</code> <code>C2E096C861700D073E5131E716A98FE1</code> <code>051AD58526F1F151ADADD2E19F537E71</code> <code>6CD5558330DEDDE1D49BE50AC20CE6A0</code> <code>40823EB497037B49FCA16549479A4E7A</code> <code>F3D349B907E71FD32E675B487CB79958</code> <code>33619B8185F1DCDAFD7309302B0829C1</code> <code>8B049CC796F4DC7A79CE49D614A92304</code> <code>D67EA44A1B57E70FA89441BDE0DA5848</code><br> <code>4AACB666</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
|
|
|
|
|
<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 A4 E4 BB 9F A1 38 67
|
|
|
|
|
0010 | 78 02 00 00 5C 07 E8 D0 F3 C6 F3 84 6F CA 4D 6D
|
|
|
|
|
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
|
|
|
|
|
0030 | F8 CD 69 F5 8E 1F 39 63 FE 50 02 00 C3 BE EC 89
|
|
|
|
|
0040 | 5C D1 EC 5A D6 54 C7 8E 37 2E 8E 60 76 8D CF 65
|
|
|
|
|
0050 | C5 13 22 6C C5 57 D4 8A 9A 4A 2B FB 8F E9 63 38
|
|
|
|
|
0060 | C1 85 1C 7C CF 14 3A EC F7 FC 86 3F DF 37 83 FA
|
|
|
|
|
0070 | E4 41 35 95 58 6E 16 5A C2 B0 CF AC 10 BC 38 3D
|
|
|
|
|
0080 | A0 B7 F3 11 D9 1C B0 D9 5A FD 1F 83 C9 A2 48 E1
|
|
|
|
|
0090 | CC 81 09 4C 64 D9 6A C9 32 88 7A E5 02 D1 6A 5C
|
|
|
|
|
00A0 | 20 8C 54 FA 7F A5 00 9D 49 41 BA F2 07 BB D2 6A
|
|
|
|
|
00B0 | D6 AC 08 6B A6 5E 17 44 A6 AE 63 88 AF 8F BB DD
|
|
|
|
|
00C0 | D1 34 BF 74 DB 5A E2 B0 A2 57 59 C3 B0 D7 B9 82
|
|
|
|
|
00D0 | 15 BF 67 67 EE B2 7F 05 F6 D5 55 E8 EB EB A3 98
|
|
|
|
|
00E0 | 68 E8 2C EE 9C 4C 52 BA 5B 81 D9 98 25 4B 5E 00
|
|
|
|
|
00F0 | 98 56 1E 1A 08 D7 AC 46 78 B0 77 8F DD 31 CB A0
|
|
|
|
|
0100 | CF 34 19 9F 5B C9 41 CC 32 1F 3E 96 47 49 D1 42
|
|
|
|
|
0110 | 88 30 50 90 4B 82 A1 5F 23 AC 1E 96 37 B4 8B 96
|
|
|
|
|
0120 | A9 02 B7 0D 6B 98 4A 5D 4F 20 E9 A5 88 8D 89 EE
|
|
|
|
|
0130 | 07 E3 A4 4D A0 8D 95 E6 00 76 1D 9C EF 41 27 23
|
|
|
|
|
0140 | 51 93 6A A4 D7 1E 23 45 49 9E 83 3A 96 DB FD 14
|
|
|
|
|
0150 | C3 0A 46 E7 01 F8 78 76 19 E8 AE 1B 44 EA FB 5A
|
|
|
|
|
0160 | 89 1A 28 B0 04 C3 E5 34 E6 FC EF 79 C0 EB 62 A5
|
|
|
|
|
0170 | 21 18 DE D1 91 BF 70 E3 4A 2B 3A DE CC FA 58 C0
|
|
|
|
|
0180 | 32 B1 3E CF 88 CB 42 DE CA 88 8A AA 1F BF A5 AC
|
|
|
|
|
0190 | C7 F4 02 9A A6 D6 11 73 CB 0B DE F1 27 76 9D 1C
|
|
|
|
|
01A0 | 10 E3 6A 00 41 F0 35 E6 4A D5 C2 81 8F 6E 3C CE
|
|
|
|
|
01B0 | 80 5A F2 29 5D 28 B9 D9 78 89 33 04 3C 40 B2 6A
|
|
|
|
|
01C0 | 42 86 96 79 F1 E7 E0 D2 BA C0 92 21 5A 74 A0 84
|
|
|
|
|
01D0 | E2 5F 4E 8E 8E 06 01 0D 22 18 F2 10 40 E6 D5 97
|
|
|
|
|
01E0 | 38 92 B5 9B 07 77 96 E4 E4 FA AB BE 20 DD 27 9A
|
|
|
|
|
01F0 | D7 35 69 D5 06 21 87 1B 4C 21 50 A0 01 2A 94 CC
|
|
|
|
|
0200 | FE 8F BD 94 51 51 87 F1 46 57 12 81 28 A4 18 D8
|
|
|
|
|
0210 | D2 6A 84 29 60 2A 10 C8 12 D4 25 68 A5 48 D4 63
|
|
|
|
|
0220 | 9A 89 CD 3C 26 A4 E2 FD 9D 10 A8 5E 6B E9 73 2E
|
|
|
|
|
0230 | C3 3A CF EC 25 74 C0 65 82 49 E1 FF F1 A6 0B 30
|
|
|
|
|
0240 | 93 10 AF 70 5A 07 03 25 08 61 C9 D3 D3 85 08 22
|
|
|
|
|
0250 | 9A 50 D0 0F 98 D5 58 51 67 C7 BC 56 7E 11 63 60
|
|
|
|
|
0260 | B8 E5 E1 77 B3 03 77 43 AB 38 FF 3E DD C3 7C 0B
|
|
|
|
|
0270 | 8A E5 A4 F9 03 2C 1F 76 14 9F 9A 2C 9E 50 0E A8
|
|
|
|
|
0280 | C0 E9 91 64 90 80 75 2A 94 B8 C7 7C</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 CC BA 07 DE A6 38 67
|
|
|
|
|
0010 | 78 02 00 00 5C 07 E8 D0 F2 FF EB DA 55 A0 62 61
|
|
|
|
|
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
|
|
|
|
|
0030 | D9 43 AB 98 93 64 1F B4 FE 50 02 00 CC E5 AA 8B
|
|
|
|
|
0040 | 5B 16 C7 C7 A2 8D A6 86 A2 FD 61 D3 51 32 D4 B9
|
|
|
|
|
0050 | 46 46 84 68 68 C8 E4 6F C7 C7 D5 E6 A2 3F 30 6D
|
|
|
|
|
0060 | B5 15 8C 7D D2 F7 FC C0 12 84 12 04 8B D2 90 47
|
|
|
|
|
0070 | FD 7C 46 57 09 B5 3E 99 E4 5E 6F 31 46 1B 93 59
|
|
|
|
|
0080 | 64 7B AD 71 CA 63 8B 20 56 F5 E7 7F 60 2D 87 74
|
|
|
|
|
0090 | 50 CC 8F FD 1D 00 D4 1A CB 77 52 23 CB BB 82 FF
|
|
|
|
|
00A0 | B5 2D 1F BB B4 91 81 D7 7A 16 E2 11 18 CB A5 99
|
|
|
|
|
00B0 | BD 7B F0 0B 4A 29 6E 70 FF 08 75 A3 BA 02 93 8A
|
|
|
|
|
00C0 | 8B 8A ED A7 22 44 2E 97 8F FA C5 E9 1F 0C BA ED
|
|
|
|
|
00D0 | 01 4E B0 DF A1 5C 10 A3 90 FE 07 D8 88 F7 3D C0
|
|
|
|
|
00E0 | 25 B6 1F 89 D0 B0 23 2E A4 9F CA 25 78 EB 77 99
|
|
|
|
|
00F0 | 2F 35 B2 FC 45 8F 50 5D 43 DC 83 5B C3 8A 2C 4B
|
|
|
|
|
0100 | 5A FE 0C 72 5B 3B 7C 0E 0D 07 DB 18 D3 F9 C9 A8
|
|
|
|
|
0110 | 39 34 9F A9 5F 11 48 1C AD 66 1C 6E 58 85 E5 80
|
|
|
|
|
0120 | D2 C7 A1 B7 BF A7 79 C1 4E 09 9C 44 B2 5F 01 63
|
|
|
|
|
0130 | F4 87 78 02 6D AF CA 02 1A F8 42 18 3F 02 AB 9E
|
|
|
|
|
0140 | 42 3A 76 D4 92 67 83 BA 24 0D 23 42 52 1B CC 48
|
|
|
|
|
0150 | D7 BC 7F 95 B3 3E E7 32 FF 2E 90 40 74 86 C4 DA
|
|
|
|
|
0160 | 4F 98 B0 A0 65 CF A6 DA BA F7 45 77 D4 2A 4F 12
|
|
|
|
|
0170 | 86 13 78 F4 79 9B 5C A7 6C 48 AF 2B DA 6F 4D A4
|
|
|
|
|
0180 | 1E 6F 71 03 73 FA 5B 82 99 A9 AC 43 BC 6B 38 DA
|
|
|
|
|
0190 | 72 D3 ED CB 09 32 D6 A5 D6 49 E4 D6 14 FA 1D 3F
|
|
|
|
|
01A0 | 86 F9 7D 5F 3B D5 5C 10 6C 49 1C C6 8C 37 A8 24
|
|
|
|
|
01B0 | 28 78 C5 85 EA E6 1F 66 1D FC 09 5C 9F 15 8B 7A
|
|
|
|
|
01C0 | B0 F9 0D 6B A9 70 65 1D 0F E6 86 42 71 18 48 2D
|
|
|
|
|
01D0 | 96 30 5A 4D F8 33 F6 6C 3E 2B F9 52 23 4E 31 88
|
|
|
|
|
01E0 | D1 A3 B6 30 37 48 19 58 BB 97 DE 43 CA 62 1C 78
|
|
|
|
|
01F0 | E1 E2 A0 3D 68 4F AC 4E D9 A5 B2 14 56 F0 B7 BF
|
|
|
|
|
0200 | 6C 5A 47 21 9A F9 FA AC D1 00 DD 5B 0B E3 C3 88
|
|
|
|
|
0210 | 3E C9 93 72 51 92 B8 97 FF D3 DA 0C 5A B7 75 BE
|
|
|
|
|
0220 | FB 83 22 83 A9 02 E6 F6 FF 0D FF 5B 45 1F AB 3C
|
|
|
|
|
0230 | 7A 7C F3 A0 47 C1 1F 86 87 39 7B DB 24 BE C9 04
|
|
|
|
|
0240 | 53 26 62 74 BC 52 CE A4 59 29 3A 54 99 80 D0 E2
|
|
|
|
|
0250 | 55 F4 59 16 BA 91 FB 33 38 C5 0C B1 7F AE E9 C1
|
|
|
|
|
0260 | F6 F0 DE 9C 67 68 F9 D3 73 60 DE 5D E4 88 62 BD
|
|
|
|
|
0270 | F9 E6 72 54 A2 7C 2D F5 6C D8 86 7A 00 A7 03 E8
|
|
|
|
|
0280 | BE 5D 32 8C C7 EE 2B 45 90 54 FA AC</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,7 +464,7 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01A4E4BB9FA13867</code></td>
|
|
|
|
|
<td><code>01CCBA07DEA63867</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>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200C3BEEC895CD1EC5AD654C78E</code> <code>372E8E60768DCF65C513226CC557D48A</code> <code>9A4A2BFB8FE96338C1851C7CCF143AEC</code> <code>F7FC863FDF3783FAE4413595586E165A</code> <code>C2B0CFAC10BC383DA0B7F311D91CB0D9</code> <code>5AFD1F83C9A248E1CC81094C64D96AC9</code> <code>32887AE502D16A5C208C54FA7FA5009D</code> <code>4941BAF207BBD26AD6AC086BA65E1744</code> <code>A6AE6388AF8FBBDDD134BF74DB5AE2B0</code> <code>A25759C3B0D7B98215BF6767EEB27F05</code> <code>F6D555E8EBEBA39868E82CEE9C4C52BA</code> <code>5B81D998254B5E0098561E1A08D7AC46</code> <code>78B0778FDD31CBA0CF34199F5BC941CC</code> <code>321F3E964749D142883050904B82A15F</code> <code>23AC1E9637B48B96A902B70D6B984A5D</code> <code>4F20E9A5888D89EE07E3A44DA08D95E6</code> <code>00761D9CEF41272351936AA4D71E2345</code> <code>499E833A96DBFD14C30A46E701F87876</code> <code>19E8AE1B44EAFB5A891A28B004C3E534</code> <code>E6FCEF79C0EB62A52118DED191BF70E3</code> <code>4A2B3ADECCFA58C032B13ECF88CB42DE</code> <code>CA888AAA1FBFA5ACC7F4029AA6D61173</code> <code>CB0BDEF127769D1C10E36A0041F035E6</code> <code>4AD5C2818F6E3CCE805AF2295D28B9D9</code> <code>788933043C40B26A42869679F1E7E0D2</code> <code>BAC092215A74A084E25F4E8E8E06010D</code> <code>2218F21040E6D5973892B59B077796E4</code> <code>E4FAABBE20DD279AD73569D50621871B</code> <code>4C2150A0012A94CCFE8FBD94515187F1</code> <code>4657128128A418D8D26A8429602A10C8</code> <code>12D42568A548D4639A89CD3C26A4E2FD</code> <code>9D10A85E6BE9732EC33ACFEC2574C065</code> <code>8249E1FFF1A60B309310AF705A070325</code> <code>0861C9D3D38508229A50D00F98D55851</code> <code>67C7BC567E116360B8E5E177B3037743</code> <code>AB38FF3EDDC37C0B8AE5A4F9032C1F76</code> <code>149F9A2C9E500EA8C0E991649080752A</code><br> <code>94B8C77C</code></td>
|
|
|
|
|
<td><code>FE500200CCE5AA8B5B16C7C7A28DA686</code> <code>A2FD61D35132D4B94646846868C8E46F</code> <code>C7C7D5E6A23F306DB5158C7DD2F7FCC0</code> <code>128412048BD29047FD7C465709B53E99</code> <code>E45E6F31461B9359647BAD71CA638B20</code> <code>56F5E77F602D877450CC8FFD1D00D41A</code> <code>CB775223CBBB82FFB52D1FBBB49181D7</code> <code>7A16E21118CBA599BD7BF00B4A296E70</code> <code>FF0875A3BA02938A8B8AEDA722442E97</code> <code>8FFAC5E91F0CBAED014EB0DFA15C10A3</code> <code>90FE07D888F73DC025B61F89D0B0232E</code> <code>A49FCA2578EB77992F35B2FC458F505D</code> <code>43DC835BC38A2C4B5AFE0C725B3B7C0E</code> <code>0D07DB18D3F9C9A839349FA95F11481C</code> <code>AD661C6E5885E580D2C7A1B7BFA779C1</code> <code>4E099C44B25F0163F48778026DAFCA02</code> <code>1AF842183F02AB9E423A76D4926783BA</code> <code>240D2342521BCC48D7BC7F95B33EE732</code> <code>FF2E90407486C4DA4F98B0A065CFA6DA</code> <code>BAF74577D42A4F12861378F4799B5CA7</code> <code>6C48AF2BDA6F4DA41E6F710373FA5B82</code> <code>99A9AC43BC6B38DA72D3EDCB0932D6A5</code> <code>D649E4D614FA1D3F86F97D5F3BD55C10</code> <code>6C491CC68C37A8242878C585EAE61F66</code> <code>1DFC095C9F158B7AB0F90D6BA970651D</code> <code>0FE686427118482D96305A4DF833F66C</code> <code>3E2BF952234E3188D1A3B63037481958</code> <code>BB97DE43CA621C78E1E2A03D684FAC4E</code> <code>D9A5B21456F0B7BF6C5A47219AF9FAAC</code> <code>D100DD5B0BE3C3883EC993725192B897</code> <code>FFD3DA0C5AB775BEFB832283A902E6F6</code> <code>FF0DFF5B451FAB3C7A7CF3A047C11F86</code> <code>87397BDB24BEC90453266274BC52CEA4</code> <code>59293A549980D0E255F45916BA91FB33</code> <code>38C50CB17FAEE9C1F6F0DE9C6768F9D3</code> <code>7360DE5DE48862BDF9E67254A27C2DF5</code> <code>6CD8867A00A703E8BE5D328CC7EE2B45</code><br> <code>9054FAAC</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = C250C7B9D3DF49688EE29B01C3B65B28399519D05011B6B5D02D9FBD0
|
|
|
|
|
<!-- 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 = C3BEEC895CD1EC5AD654C78E372E8E60768DCF65C513226CC557D48A9A4A2BFB8FE96338C1851C7CCF143AECF7FC863FDF3783FAE4413595586E165AC2B0CFAC10BC383DA0B7F311D91CB0D95AFD1F83C9A248E1CC81094C64D96AC932887AE502D16A5C208C54FA7FA5009D4941BAF207BBD26AD6AC086BA65E1744A6AE6388AF8FBBDDD134BF74DB5AE2B0A25759C3B0D7B98215BF6767EEB27F05F6D555E8EBEBA39868E82CEE9C4C52BA5B81D998254B5E0098561E1A08D7AC4678B0778FDD31CBA0CF34199F5BC941CC321F3E964749D142883050904B82A15F23AC1E9637B48B96A902B70D6B984A5D4F20E9A5888D89EE07E3A44DA08D95E600761D9CEF41272351936AA4D71E2345499E833A96DBFD14C30A46E701F8787619E8AE1B44EAFB5A891A28B004C3E534E6FCEF79C0EB62A52118DED191BF70E34A2B3ADECCFA58C032B13ECF88CB42DECA888AAA1FBFA5ACC7F4029AA6D61173CB0BDEF127769D1C10E36A0041F035E64AD5C2818F6E3CCE805AF2295D28B9D9788933043C40B26A42869679F1E7E0D2BAC092215A74A084E25F4E8E8E06010D2218F21040E6D5973892B59B077796E4E4FAABBE20DD279AD73569D50621871B4C2150A0012A94CCFE8FBD94515187F14657128128A418D8D26A8429602A10C812D42568A548D4639A89CD3C26A4E2FD9D10A85E6BE9732EC33ACFEC2574C0658249E1FFF1A60B309310AF705A0703250861C9D3D38508229A50D00F98D5585167C7BC567E116360B8E5E177B3037743AB38FF3EDDC37C0B8AE5A4F9032C1F76149F9A2C9E500EA8C0E991649080752A94B8C77C
|
|
|
|
|
tmp_aes_key = 14444D2E97F2965361A855080116B5B7660CC9B01833A9E65FE174A5D3998EFA
|
|
|
|
|
tmp_aes_iv = 1000B78D04D1218EE73281AAACC5043BBF035441C9F231928F9946CD61FF7BEC</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = CCE5AA8B5B16C7C7A28DA686A2FD61D35132D4B94646846868C8E46FC7C7D5E6A23F306DB5158C7DD2F7FCC0128412048BD29047FD7C465709B53E99E45E6F31461B9359647BAD71CA638B2056F5E77F602D877450CC8FFD1D00D41ACB775223CBBB82FFB52D1FBBB49181D77A16E21118CBA599BD7BF00B4A296E70FF0875A3BA02938A8B8AEDA722442E978FFAC5E91F0CBAED014EB0DFA15C10A390FE07D888F73DC025B61F89D0B0232EA49FCA2578EB77992F35B2FC458F505D43DC835BC38A2C4B5AFE0C725B3B7C0E0D07DB18D3F9C9A839349FA95F11481CAD661C6E5885E580D2C7A1B7BFA779C14E099C44B25F0163F48778026DAFCA021AF842183F02AB9E423A76D4926783BA240D2342521BCC48D7BC7F95B33EE732FF2E90407486C4DA4F98B0A065CFA6DABAF74577D42A4F12861378F4799B5CA76C48AF2BDA6F4DA41E6F710373FA5B8299A9AC43BC6B38DA72D3EDCB0932D6A5D649E4D614FA1D3F86F97D5F3BD55C106C491CC68C37A8242878C585EAE61F661DFC095C9F158B7AB0F90D6BA970651D0FE686427118482D96305A4DF833F66C3E2BF952234E3188D1A3B63037481958BB97DE43CA621C78E1E2A03D684FAC4ED9A5B21456F0B7BF6C5A47219AF9FAACD100DD5B0BE3C3883EC993725192B897FFD3DA0C5AB775BEFB832283A902E6F6FF0DFF5B451FAB3C7A7CF3A047C11F8687397BDB24BEC90453266274BC52CEA459293A549980D0E255F45916BA91FB3338C50CB17FAEE9C1F6F0DE9C6768F9D37360DE5DE48862BDF9E67254A27C2DF56CD8867A00A703E8BE5D328CC7EE2B459054FAAC
|
|
|
|
|
tmp_aes_key = 594061AE8790464CD895F4EC6E87183395A1D3030D30F301DC4BEA649F715D0E
|
|
|
|
|
tmp_aes_iv = 4D77BC1E9C065F093B95359EA200FB0DBB6499A2A2356E2764FA3EC11183DF59</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = C78918986B2D95349961BB0CA1C64A0D4B87493DBA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010064309197ED7E87B825C2A9C5262DD94853F8D3949835A76C6927714E0550929DBA2A8C8CA3013F3626ADEA35D6748C37B49BA1F5A742D656C8BE77293C639C2AD1FE717FC38AAE70D865D51AEEB7C20E1B0751D2FABABA321798C858FCD8E3B36D20959DB6AB20C5FE09E71F4A03EC54B7626BBEF6B3335391F0943F71D32EA39F00194069B160C71245A1D3818D8F1A7855CBE5D701D8FBB9E0DD76FBFF556A076ED396494D93233576FE11889C4428FD12399B1B51A852138306CAAC69F7EF92DE4E36B4FBA5063A649189857358CDB86CAFBFCE39CFB3BAA29191CFCADAADFDC55D4C12375083AAF959695CB6490D1E6CF9BE3BA96C21EED606B63D8A6DEF9FA13867E9B292340D783705
|
|
|
|
|
answer = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396303000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010064309197ED7E87B825C2A9C5262DD94853F8D3949835A76C6927714E0550929DBA2A8C8CA3013F3626ADEA35D6748C37B49BA1F5A742D656C8BE77293C639C2AD1FE717FC38AAE70D865D51AEEB7C20E1B0751D2FABABA321798C858FCD8E3B36D20959DB6AB20C5FE09E71F4A03EC54B7626BBEF6B3335391F0943F71D32EA39F00194069B160C71245A1D3818D8F1A7855CBE5D701D8FBB9E0DD76FBFF556A076ED396494D93233576FE11889C4428FD12399B1B51A852138306CAAC69F7EF92DE4E36B4FBA5063A649189857358CDB86CAFBFCE39CFB3BAA29191CFCADAADFDC55D4C12375083AAF959695CB6490D1E6CF9BE3BA96C21EED606B63D8A6DEF9FA13867E9B292340D783705</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 8EC374A6E5C8D1351060184DB3D5F334AD204BE5BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010047BFBF1B479D5A20E74889EF9CEECE80F9135067904A56B6EF0C4A30374085607A674D2C84C442956816AC2A72F835BAE1DDE4CB1735741A9306529EA3C143B85977FA6E2B2187F1F26ECF6D20281FC0AD417084F3DD54DE11ADE3DB7D3D9260184537FF353F4B0D02421D41B9F10A6DD2025F5637D5AB7A3115B9238F83E1BE9029A0FC444E5F516EC3E4E7508F12209ED9ED543E8BDF86B12F878C7DD35FAF9175234AA78D92A8AA4AD4AB38951F26A7AB03B00B5697C40587D31A320F1A87A8C6F6D5ACC40B04C0D4C927658C40CC014FC2FF678B78F818AA961B4AB61D7ADFD6E68BB3B180027FCF76D164852891E16CDAD45209B9EC8FA7D26E409E75E7DEA63867AEE470C76CBBBB02
|
|
|
|
|
answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010047BFBF1B479D5A20E74889EF9CEECE80F9135067904A56B6EF0C4A30374085607A674D2C84C442956816AC2A72F835BAE1DDE4CB1735741A9306529EA3C143B85977FA6E2B2187F1F26ECF6D20281FC0AD417084F3DD54DE11ADE3DB7D3D9260184537FF353F4B0D02421D41B9F10A6DD2025F5637D5AB7A3115B9238F83E1BE9029A0FC444E5F516EC3E4E7508F12209ED9ED543E8BDF86B12F878C7DD35FAF9175234AA78D92A8AA4AD4AB38951F26A7AB03B00B5697C40587D31A320F1A87A8C6F6D5ACC40B04C0D4C927658C40CC014FC2FF678B78F818AA961B4AB61D7ADFD6E68BB3B180027FCF76D164852891E16CDAD45209B9EC8FA7D26E409E75E7DEA63867AEE470C76CBBBB02</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 F3 C6 F3 84 6F CA 4D 6D 5F 17 DC 5D
|
|
|
|
|
0010 | C0 1C 36 7F BC D0 94 5F A8 89 89 60 F8 CD 69 F5
|
|
|
|
|
0020 | 8E 1F 39 63 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 F2 FF EB DA 55 A0 62 61 90 B6 57 AC
|
|
|
|
|
0010 | CD F3 9C 05 C8 97 E4 83 8C 1A 47 33 D9 43 AB 98
|
|
|
|
|
0020 | 93 64 1F B4 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 = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
|
|
|
|
|
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 | 64 30 91 97 ED 7E 87 B8 25 C2 A9 C5 26 2D D9 48
|
|
|
|
|
0140 | 53 F8 D3 94 98 35 A7 6C 69 27 71 4E 05 50 92 9D
|
|
|
|
|
0150 | BA 2A 8C 8C A3 01 3F 36 26 AD EA 35 D6 74 8C 37
|
|
|
|
|
0160 | B4 9B A1 F5 A7 42 D6 56 C8 BE 77 29 3C 63 9C 2A
|
|
|
|
|
0170 | D1 FE 71 7F C3 8A AE 70 D8 65 D5 1A EE B7 C2 0E
|
|
|
|
|
0180 | 1B 07 51 D2 FA BA BA 32 17 98 C8 58 FC D8 E3 B3
|
|
|
|
|
0190 | 6D 20 95 9D B6 AB 20 C5 FE 09 E7 1F 4A 03 EC 54
|
|
|
|
|
01A0 | B7 62 6B BE F6 B3 33 53 91 F0 94 3F 71 D3 2E A3
|
|
|
|
|
01B0 | 9F 00 19 40 69 B1 60 C7 12 45 A1 D3 81 8D 8F 1A
|
|
|
|
|
01C0 | 78 55 CB E5 D7 01 D8 FB B9 E0 DD 76 FB FF 55 6A
|
|
|
|
|
01D0 | 07 6E D3 96 49 4D 93 23 35 76 FE 11 88 9C 44 28
|
|
|
|
|
01E0 | FD 12 39 9B 1B 51 A8 52 13 83 06 CA AC 69 F7 EF
|
|
|
|
|
01F0 | 92 DE 4E 36 B4 FB A5 06 3A 64 91 89 85 73 58 CD
|
|
|
|
|
0200 | B8 6C AF BF CE 39 CF B3 BA A2 91 91 CF CA DA AD
|
|
|
|
|
0210 | FD C5 5D 4C 12 37 50 83 AA F9 59 69 5C B6 49 0D
|
|
|
|
|
0220 | 1E 6C F9 BE 3B A9 6C 21 EE D6 06 B6 3D 8A 6D EF
|
|
|
|
|
0230 | 9F A1 38 67</code></pre>
|
|
|
|
|
0130 | 47 BF BF 1B 47 9D 5A 20 E7 48 89 EF 9C EE CE 80
|
|
|
|
|
0140 | F9 13 50 67 90 4A 56 B6 EF 0C 4A 30 37 40 85 60
|
|
|
|
|
0150 | 7A 67 4D 2C 84 C4 42 95 68 16 AC 2A 72 F8 35 BA
|
|
|
|
|
0160 | E1 DD E4 CB 17 35 74 1A 93 06 52 9E A3 C1 43 B8
|
|
|
|
|
0170 | 59 77 FA 6E 2B 21 87 F1 F2 6E CF 6D 20 28 1F C0
|
|
|
|
|
0180 | AD 41 70 84 F3 DD 54 DE 11 AD E3 DB 7D 3D 92 60
|
|
|
|
|
0190 | 18 45 37 FF 35 3F 4B 0D 02 42 1D 41 B9 F1 0A 6D
|
|
|
|
|
01A0 | D2 02 5F 56 37 D5 AB 7A 31 15 B9 23 8F 83 E1 BE
|
|
|
|
|
01B0 | 90 29 A0 FC 44 4E 5F 51 6E C3 E4 E7 50 8F 12 20
|
|
|
|
|
01C0 | 9E D9 ED 54 3E 8B DF 86 B1 2F 87 8C 7D D3 5F AF
|
|
|
|
|
01D0 | 91 75 23 4A A7 8D 92 A8 AA 4A D4 AB 38 95 1F 26
|
|
|
|
|
01E0 | A7 AB 03 B0 0B 56 97 C4 05 87 D3 1A 32 0F 1A 87
|
|
|
|
|
01F0 | A8 C6 F6 D5 AC C4 0B 04 C0 D4 C9 27 65 8C 40 CC
|
|
|
|
|
0200 | 01 4F C2 FF 67 8B 78 F8 18 AA 96 1B 4A B6 1D 7A
|
|
|
|
|
0210 | DF D6 E6 8B B3 B1 80 02 7F CF 76 D1 64 85 28 91
|
|
|
|
|
0220 | E1 6C DA D4 52 09 B9 EC 8F A7 D2 6E 40 9E 75 E7
|
|
|
|
|
0230 | DE A6 38 67</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 = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE00010064309197ED7E87B825C2A9C5</code> <code>262DD94853F8D3949835A76C6927714E</code> <code>0550929DBA2A8C8CA3013F3626ADEA35</code> <code>D6748C37B49BA1F5A742D656C8BE7729</code> <code>3C639C2AD1FE717FC38AAE70D865D51A</code> <code>EEB7C20E1B0751D2FABABA321798C858</code> <code>FCD8E3B36D20959DB6AB20C5FE09E71F</code> <code>4A03EC54B7626BBEF6B3335391F0943F</code> <code>71D32EA39F00194069B160C71245A1D3</code> <code>818D8F1A7855CBE5D701D8FBB9E0DD76</code> <code>FBFF556A076ED396494D93233576FE11</code> <code>889C4428FD12399B1B51A852138306CA</code> <code>AC69F7EF92DE4E36B4FBA5063A649189</code> <code>857358CDB86CAFBFCE39CFB3BAA29191</code> <code>CFCADAADFDC55D4C12375083AAF95969</code> <code>5CB6490D1E6CF9BE3BA96C21EED606B6</code><br> <code>3D8A6DEF</code></td>
|
|
|
|
|
<td><code>FE00010047BFBF1B479D5A20E74889EF</code> <code>9CEECE80F9135067904A56B6EF0C4A30</code> <code>374085607A674D2C84C442956816AC2A</code> <code>72F835BAE1DDE4CB1735741A9306529E</code> <code>A3C143B85977FA6E2B2187F1F26ECF6D</code> <code>20281FC0AD417084F3DD54DE11ADE3DB</code> <code>7D3D9260184537FF353F4B0D02421D41</code> <code>B9F10A6DD2025F5637D5AB7A3115B923</code> <code>8F83E1BE9029A0FC444E5F516EC3E4E7</code> <code>508F12209ED9ED543E8BDF86B12F878C</code> <code>7DD35FAF9175234AA78D92A8AA4AD4AB</code> <code>38951F26A7AB03B00B5697C40587D31A</code> <code>320F1A87A8C6F6D5ACC40B04C0D4C927</code> <code>658C40CC014FC2FF678B78F818AA961B</code> <code>4AB61D7ADFD6E68BB3B180027FCF76D1</code> <code>64852891E16CDAD45209B9EC8FA7D26E</code><br> <code>409E75E7</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>9FA13867</code> (1731764639 in decimal)</td>
|
|
|
|
|
<td><code>DEA63867</code> (1731765982 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
|
|
|
|
|
<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 = 24D6948F069F0692642B2BB1EEE84FAC2DFA2592BA07CBE9043CCD52D46671437DA9E2554F0EB04649B141E8C492133608BC0AB97CE39FC51C35A48D9A0FE08496786BAFC68388218FBB50F71B1224C0D92487EB10B7270D7119FFBCBEE9356B3B7E908EC05723F25791FB167A97E59EDEE611554806337395D58021E2A1A34B5E387B4084357BF2BDCC878E94AEFCC31E4BF2B9A4A0AF79EAA939F085119FDF3170538FE6B5C8C86BD68B829390AC421E8229F280D5CE66537981A5E2DAC46C6B0BD1148949D928FE0D04FAD968ECD29B41BCB4E8048BF3B125F4BE5BDEB2F6E10BE19747DA312F8029BEED224308095B02981B15DA4DF80A45411B4502D435</code></pre>
|
|
|
|
|
<pre><code>b = 192B33AF8896B004B5697EC9E8EDAB4C1F3D89312A51FD8FE4768D5B19AB55938FB45F9CDECAC165721285AB40E02100FC8768D54ED0C0AE5C3CEA32985EB22F112FAF76CFFE9CFF737ADEEBA9BC3498B342D6100FDD277D96F677960EDC2215527707ECAC55A1058581DF461948548D9D60714A5ED62F4CB4A1BA8DCAC0209DFA75E17D7AE8F09054442BB3EC20360665EDF5B1D67432F2AF9A761B3338CD6C31B47F78D81BD23E8548E23D5CE8AF796ECCC26D1C24E8CC7D08774C60BB1FCE5ACB3B9B6CC2B99FA72B1B2719E0107AA084FAF9BDC79A18D9B8DDBC101D6FA3C13D7D9E2F5DD127661626DD7A65148ED4135E6A19F1ADC0CA709A8A04603368</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 = 6B8B554F20E59FD2C0F6ECD9038941330F790CA16ECDC221F38AA4E1336A93515E93E42BF2E74F71ECC2BE4BBE3D55757735474D2FC67B334219E0CF20B39CE1035DFC06932FFBA36E2F701FED5C4439700F8B0370DAAE259A4CFB16D39ECCF55EE28DCCB59279064EB69772AAD2EB1F6413A5127E503ABF8A586F07181298551ACC29F91CA011DABA9192188F21A5AE130C31E6E7C47F87052C87AE4598E479AFEAE4234278317AEC386AC8F5C345C15863AB35824560A396202F13477E7320974AB22C176BABC8E7864810F255C7BFFA723AC751CBAE408C7DE15EBFDF7CA4B181CC2EE01313E49FD65AF53935049BE7B4F75404DC243B5C218A37A65D3077</code></pre>
|
|
|
|
|
<pre><code>g_b = 35A300F632B557BCF18A927A4DE8AFFCAFF852DB2AB3F43FF3D2CC1B902B1126BD4FA49B87DE3F92184EEC68EBD16345E4D4B33C2816637FA8BECABC99C6028300E6B9304CB0A182916F6D9C865619D3993367E8FF6FC4E797C57E654A673C8712D4E07A9E64C1B4157C2C9624DF295B285BB044A45EC45CBC2A10649E02B2239072393E6AC72068136B884BBC418E024BF8A8DD12DBB534EFFF235B5E78AABB524CED3E2C18C607F9832066AF940BA10E30A299B0AC55E1B45864FA54A587D7ACE194868027A98F69595725E1AC03095E37C04861AE41BE642BB9244619509FB3453CF8325BDB0077AF51AD276D937F8618EEA693C6A116BF05B02AE956AC65</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 F3 C6 F3 84 6F CA 4D 6D 5F 17 DC 5D
|
|
|
|
|
0010 | C0 1C 36 7F BC D0 94 5F A8 89 89 60 F8 CD 69 F5
|
|
|
|
|
0020 | 8E 1F 39 63 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 6B 8B 55 4F 20 E5 9F D2 C0 F6 EC D9 03 89 41 33
|
|
|
|
|
0040 | 0F 79 0C A1 6E CD C2 21 F3 8A A4 E1 33 6A 93 51
|
|
|
|
|
0050 | 5E 93 E4 2B F2 E7 4F 71 EC C2 BE 4B BE 3D 55 75
|
|
|
|
|
0060 | 77 35 47 4D 2F C6 7B 33 42 19 E0 CF 20 B3 9C E1
|
|
|
|
|
0070 | 03 5D FC 06 93 2F FB A3 6E 2F 70 1F ED 5C 44 39
|
|
|
|
|
0080 | 70 0F 8B 03 70 DA AE 25 9A 4C FB 16 D3 9E CC F5
|
|
|
|
|
0090 | 5E E2 8D CC B5 92 79 06 4E B6 97 72 AA D2 EB 1F
|
|
|
|
|
00A0 | 64 13 A5 12 7E 50 3A BF 8A 58 6F 07 18 12 98 55
|
|
|
|
|
00B0 | 1A CC 29 F9 1C A0 11 DA BA 91 92 18 8F 21 A5 AE
|
|
|
|
|
00C0 | 13 0C 31 E6 E7 C4 7F 87 05 2C 87 AE 45 98 E4 79
|
|
|
|
|
00D0 | AF EA E4 23 42 78 31 7A EC 38 6A C8 F5 C3 45 C1
|
|
|
|
|
00E0 | 58 63 AB 35 82 45 60 A3 96 20 2F 13 47 7E 73 20
|
|
|
|
|
00F0 | 97 4A B2 2C 17 6B AB C8 E7 86 48 10 F2 55 C7 BF
|
|
|
|
|
0100 | FA 72 3A C7 51 CB AE 40 8C 7D E1 5E BF DF 7C A4
|
|
|
|
|
0110 | B1 81 CC 2E E0 13 13 E4 9F D6 5A F5 39 35 04 9B
|
|
|
|
|
0120 | E7 B4 F7 54 04 DC 24 3B 5C 21 8A 37 A6 5D 30 77</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 F2 FF EB DA 55 A0 62 61 90 B6 57 AC
|
|
|
|
|
0010 | CD F3 9C 05 C8 97 E4 83 8C 1A 47 33 D9 43 AB 98
|
|
|
|
|
0020 | 93 64 1F B4 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 35 A3 00 F6 32 B5 57 BC F1 8A 92 7A 4D E8 AF FC
|
|
|
|
|
0040 | AF F8 52 DB 2A B3 F4 3F F3 D2 CC 1B 90 2B 11 26
|
|
|
|
|
0050 | BD 4F A4 9B 87 DE 3F 92 18 4E EC 68 EB D1 63 45
|
|
|
|
|
0060 | E4 D4 B3 3C 28 16 63 7F A8 BE CA BC 99 C6 02 83
|
|
|
|
|
0070 | 00 E6 B9 30 4C B0 A1 82 91 6F 6D 9C 86 56 19 D3
|
|
|
|
|
0080 | 99 33 67 E8 FF 6F C4 E7 97 C5 7E 65 4A 67 3C 87
|
|
|
|
|
0090 | 12 D4 E0 7A 9E 64 C1 B4 15 7C 2C 96 24 DF 29 5B
|
|
|
|
|
00A0 | 28 5B B0 44 A4 5E C4 5C BC 2A 10 64 9E 02 B2 23
|
|
|
|
|
00B0 | 90 72 39 3E 6A C7 20 68 13 6B 88 4B BC 41 8E 02
|
|
|
|
|
00C0 | 4B F8 A8 DD 12 DB B5 34 EF FF 23 5B 5E 78 AA BB
|
|
|
|
|
00D0 | 52 4C ED 3E 2C 18 C6 07 F9 83 20 66 AF 94 0B A1
|
|
|
|
|
00E0 | 0E 30 A2 99 B0 AC 55 E1 B4 58 64 FA 54 A5 87 D7
|
|
|
|
|
00F0 | AC E1 94 86 80 27 A9 8F 69 59 57 25 E1 AC 03 09
|
|
|
|
|
0100 | 5E 37 C0 48 61 AE 41 BE 64 2B B9 24 46 19 50 9F
|
|
|
|
|
0110 | B3 45 3C F8 32 5B DB 00 77 AF 51 AD 27 6D 93 7F
|
|
|
|
|
0120 | 86 18 EE A6 93 C6 A1 16 BF 05 B0 2A E9 56 AC 65</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 = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE0001006B8B554F20E59FD2C0F6ECD9</code> <code>038941330F790CA16ECDC221F38AA4E1</code> <code>336A93515E93E42BF2E74F71ECC2BE4B</code> <code>BE3D55757735474D2FC67B334219E0CF</code> <code>20B39CE1035DFC06932FFBA36E2F701F</code> <code>ED5C4439700F8B0370DAAE259A4CFB16</code> <code>D39ECCF55EE28DCCB59279064EB69772</code> <code>AAD2EB1F6413A5127E503ABF8A586F07</code> <code>181298551ACC29F91CA011DABA919218</code> <code>8F21A5AE130C31E6E7C47F87052C87AE</code> <code>4598E479AFEAE4234278317AEC386AC8</code> <code>F5C345C15863AB35824560A396202F13</code> <code>477E7320974AB22C176BABC8E7864810</code> <code>F255C7BFFA723AC751CBAE408C7DE15E</code> <code>BFDF7CA4B181CC2EE01313E49FD65AF5</code> <code>3935049BE7B4F75404DC243B5C218A37</code><br> <code>A65D3077</code></td>
|
|
|
|
|
<td><code>FE00010035A300F632B557BCF18A927A</code> <code>4DE8AFFCAFF852DB2AB3F43FF3D2CC1B</code> <code>902B1126BD4FA49B87DE3F92184EEC68</code> <code>EBD16345E4D4B33C2816637FA8BECABC</code> <code>99C6028300E6B9304CB0A182916F6D9C</code> <code>865619D3993367E8FF6FC4E797C57E65</code> <code>4A673C8712D4E07A9E64C1B4157C2C96</code> <code>24DF295B285BB044A45EC45CBC2A1064</code> <code>9E02B2239072393E6AC72068136B884B</code> <code>BC418E024BF8A8DD12DBB534EFFF235B</code> <code>5E78AABB524CED3E2C18C607F9832066</code> <code>AF940BA10E30A299B0AC55E1B45864FA</code> <code>54A587D7ACE194868027A98F69595725</code> <code>E1AC03095E37C04861AE41BE642BB924</code> <code>4619509FB3453CF8325BDB0077AF51AD</code> <code>276D937F8618EEA693C6A116BF05B02A</code><br> <code>E956AC65</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 = BA0D89B5F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F396
|
|
|
|
|
<!-- 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 = 54B64366F3C6F3846FCA4D6D5F17DC5DC01C367FBCD0945FA8898960F8CD69F58E1F39630000000000000000FE0001006B8B554F20E59FD2C0F6ECD9038941330F790CA16ECDC221F38AA4E1336A93515E93E42BF2E74F71ECC2BE4BBE3D55757735474D2FC67B334219E0CF20B39CE1035DFC06932FFBA36E2F701FED5C4439700F8B0370DAAE259A4CFB16D39ECCF55EE28DCCB59279064EB69772AAD2EB1F6413A5127E503ABF8A586F07181298551ACC29F91CA011DABA9192188F21A5AE130C31E6E7C47F87052C87AE4598E479AFEAE4234278317AEC386AC8F5C345C15863AB35824560A396202F13477E7320974AB22C176BABC8E7864810F255C7BFFA723AC751CBAE408C7DE15EBFDF7CA4B181CC2EE01313E49FD65AF53935049BE7B4F75404DC243B5C218A37A65D3077
|
|
|
|
|
padding = 805A3652D572D8A00CC641A7
|
|
|
|
|
tmp_aes_key = 14444D2E97F2965361A855080116B5B7660CC9B01833A9E65FE174A5D3998EFA
|
|
|
|
|
tmp_aes_iv = 1000B78D04D1218EE73281AAACC5043BBF035441C9F231928F9946CD61FF7BEC</code></pre>
|
|
|
|
|
<pre><code>data = 54B64366F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB40000000000000000FE00010035A300F632B557BCF18A927A4DE8AFFCAFF852DB2AB3F43FF3D2CC1B902B1126BD4FA49B87DE3F92184EEC68EBD16345E4D4B33C2816637FA8BECABC99C6028300E6B9304CB0A182916F6D9C865619D3993367E8FF6FC4E797C57E654A673C8712D4E07A9E64C1B4157C2C9624DF295B285BB044A45EC45CBC2A10649E02B2239072393E6AC72068136B884BBC418E024BF8A8DD12DBB534EFFF235B5E78AABB524CED3E2C18C607F9832066AF940BA10E30A299B0AC55E1B45864FA54A587D7ACE194868027A98F69595725E1AC03095E37C04861AE41BE642BB9244619509FB3453CF8325BDB0077AF51AD276D937F8618EEA693C6A116BF05B02AE956AC65
|
|
|
|
|
padding = BA5BA18ABF32B3EFA400DCBA
|
|
|
|
|
tmp_aes_key = 594061AE8790464CD895F4EC6E87183395A1D3030D30F301DC4BEA649F715D0E
|
|
|
|
|
tmp_aes_iv = 4D77BC1E9C065F093B95359EA200FB0DBB6499A2A2356E2764FA3EC11183DF59</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 = 8D118132E18810CF952B4E43E22ECCAAEC55ED33F3DC451943AE50CF2BFCA79F824B9DFB106B9DEB170286A51981E37B4C7D0DD42F1E737CD50A510ABD667C81C829DBD6F1B8051051C168C481C88B6533E5E55454D065EF3EE7E0DDCCAA841A0835D01C1E5A881C328F5AB8FC7699109947F112C28F35039A21D79E8029140208ABECAB7EA67C20E644231189B0461933710A89B955B0AC8E5F673ECEEF01E67E11408C7B6CD904505B8A94FF46094EA17DB1F854E5BFE709286FCA084EE6F2DD107BB2AEC2B9C9B22FB84894C235E589F99E5600F70BE8DBC5F6D952C8EE0366D5F8CBB34EDF6DBEC9600606137FE19FDAEB648702832E85D23D0FE0EE74B26C180BAA05BEF38884BB2C6DFFD0C5E15CD1A3251D73CF8108A68E202869811CECBBDC19728C800E911FD860541A3E7E4AFB6BF102CE1734316BC5069C76504E58F5C89A587748ED9B26E710361E7685</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 8DC5EDF4570B333797D9B0A39B2803B5EFDD4DECE3D7305D1A05348C7EF11BAC05FD42853527D56914DDF9D4AA5C2A42CEF5493B67ED45605BB297DB2B2F0AED96B028BA3029F7A3D39C689B271C6B42A124EA9E82B6B473B844F2DC8B40E1589E88FA1AD7CB598904E540C66B1AE111D26C74C0BA4261FBD313144F5106940A417E042B2553A55AD456154AD9F6C49D26D7CC7A853561539AD08A59B1B39D0D89671EABBE294246F1E2D038679D084DB0DFCFD26C4502B217C6EFCA8C66F8AFDE83A65241892CD2B13B4D81328E1A5182502E9E730C4847FFB797D02799FDD268B3D6226198BF87D9558172D4BCFFB4BC54464369A9309488A0C67BB8E99190C66B8E7848E742C8FD5D3491ABDC4B238BCB512E1D56B52B4EB1A8E74C664ABA560C80DF4152243BCCEFE78E51BCCBE29E7BF9867739B97891318C6CE9BAEC007B5B6708DD0C3DFD911AEA5CA552EB03</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 88 99 0D 00 9F A1 38 67
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 F3 C6 F3 84 6F CA 4D 6D
|
|
|
|
|
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
|
|
|
|
|
0030 | F8 CD 69 F5 8E 1F 39 63 FE 50 01 00 8D 11 81 32
|
|
|
|
|
0040 | E1 88 10 CF 95 2B 4E 43 E2 2E CC AA EC 55 ED 33
|
|
|
|
|
0050 | F3 DC 45 19 43 AE 50 CF 2B FC A7 9F 82 4B 9D FB
|
|
|
|
|
0060 | 10 6B 9D EB 17 02 86 A5 19 81 E3 7B 4C 7D 0D D4
|
|
|
|
|
0070 | 2F 1E 73 7C D5 0A 51 0A BD 66 7C 81 C8 29 DB D6
|
|
|
|
|
0080 | F1 B8 05 10 51 C1 68 C4 81 C8 8B 65 33 E5 E5 54
|
|
|
|
|
0090 | 54 D0 65 EF 3E E7 E0 DD CC AA 84 1A 08 35 D0 1C
|
|
|
|
|
00A0 | 1E 5A 88 1C 32 8F 5A B8 FC 76 99 10 99 47 F1 12
|
|
|
|
|
00B0 | C2 8F 35 03 9A 21 D7 9E 80 29 14 02 08 AB EC AB
|
|
|
|
|
00C0 | 7E A6 7C 20 E6 44 23 11 89 B0 46 19 33 71 0A 89
|
|
|
|
|
00D0 | B9 55 B0 AC 8E 5F 67 3E CE EF 01 E6 7E 11 40 8C
|
|
|
|
|
00E0 | 7B 6C D9 04 50 5B 8A 94 FF 46 09 4E A1 7D B1 F8
|
|
|
|
|
00F0 | 54 E5 BF E7 09 28 6F CA 08 4E E6 F2 DD 10 7B B2
|
|
|
|
|
0100 | AE C2 B9 C9 B2 2F B8 48 94 C2 35 E5 89 F9 9E 56
|
|
|
|
|
0110 | 00 F7 0B E8 DB C5 F6 D9 52 C8 EE 03 66 D5 F8 CB
|
|
|
|
|
0120 | B3 4E DF 6D BE C9 60 06 06 13 7F E1 9F DA EB 64
|
|
|
|
|
0130 | 87 02 83 2E 85 D2 3D 0F E0 EE 74 B2 6C 18 0B AA
|
|
|
|
|
0140 | 05 BE F3 88 84 BB 2C 6D FF D0 C5 E1 5C D1 A3 25
|
|
|
|
|
0150 | 1D 73 CF 81 08 A6 8E 20 28 69 81 1C EC BB DC 19
|
|
|
|
|
0160 | 72 8C 80 0E 91 1F D8 60 54 1A 3E 7E 4A FB 6B F1
|
|
|
|
|
0170 | 02 CE 17 34 31 6B C5 06 9C 76 50 4E 58 F5 C8 9A
|
|
|
|
|
0180 | 58 77 48 ED 9B 26 E7 10 36 1E 76 85</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 1C 48 07 00 DE A6 38 67
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 F2 FF EB DA 55 A0 62 61
|
|
|
|
|
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
|
|
|
|
|
0030 | D9 43 AB 98 93 64 1F B4 FE 50 01 00 8D C5 ED F4
|
|
|
|
|
0040 | 57 0B 33 37 97 D9 B0 A3 9B 28 03 B5 EF DD 4D EC
|
|
|
|
|
0050 | E3 D7 30 5D 1A 05 34 8C 7E F1 1B AC 05 FD 42 85
|
|
|
|
|
0060 | 35 27 D5 69 14 DD F9 D4 AA 5C 2A 42 CE F5 49 3B
|
|
|
|
|
0070 | 67 ED 45 60 5B B2 97 DB 2B 2F 0A ED 96 B0 28 BA
|
|
|
|
|
0080 | 30 29 F7 A3 D3 9C 68 9B 27 1C 6B 42 A1 24 EA 9E
|
|
|
|
|
0090 | 82 B6 B4 73 B8 44 F2 DC 8B 40 E1 58 9E 88 FA 1A
|
|
|
|
|
00A0 | D7 CB 59 89 04 E5 40 C6 6B 1A E1 11 D2 6C 74 C0
|
|
|
|
|
00B0 | BA 42 61 FB D3 13 14 4F 51 06 94 0A 41 7E 04 2B
|
|
|
|
|
00C0 | 25 53 A5 5A D4 56 15 4A D9 F6 C4 9D 26 D7 CC 7A
|
|
|
|
|
00D0 | 85 35 61 53 9A D0 8A 59 B1 B3 9D 0D 89 67 1E AB
|
|
|
|
|
00E0 | BE 29 42 46 F1 E2 D0 38 67 9D 08 4D B0 DF CF D2
|
|
|
|
|
00F0 | 6C 45 02 B2 17 C6 EF CA 8C 66 F8 AF DE 83 A6 52
|
|
|
|
|
0100 | 41 89 2C D2 B1 3B 4D 81 32 8E 1A 51 82 50 2E 9E
|
|
|
|
|
0110 | 73 0C 48 47 FF B7 97 D0 27 99 FD D2 68 B3 D6 22
|
|
|
|
|
0120 | 61 98 BF 87 D9 55 81 72 D4 BC FF B4 BC 54 46 43
|
|
|
|
|
0130 | 69 A9 30 94 88 A0 C6 7B B8 E9 91 90 C6 6B 8E 78
|
|
|
|
|
0140 | 48 E7 42 C8 FD 5D 34 91 AB DC 4B 23 8B CB 51 2E
|
|
|
|
|
0150 | 1D 56 B5 2B 4E B1 A8 E7 4C 66 4A BA 56 0C 80 DF
|
|
|
|
|
0160 | 41 52 24 3B CC EF E7 8E 51 BC CB E2 9E 7B F9 86
|
|
|
|
|
0170 | 77 39 B9 78 91 31 8C 6C E9 BA EC 00 7B 5B 67 08
|
|
|
|
|
0180 | DD 0C 3D FD 91 1A EA 5C A5 52 EB 03</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>88990D009FA13867</code></td>
|
|
|
|
|
<td><code>1C480700DEA63867</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>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE5001008D118132E18810CF952B4E43</code> <code>E22ECCAAEC55ED33F3DC451943AE50CF</code> <code>2BFCA79F824B9DFB106B9DEB170286A5</code> <code>1981E37B4C7D0DD42F1E737CD50A510A</code> <code>BD667C81C829DBD6F1B8051051C168C4</code> <code>81C88B6533E5E55454D065EF3EE7E0DD</code> <code>CCAA841A0835D01C1E5A881C328F5AB8</code> <code>FC7699109947F112C28F35039A21D79E</code> <code>8029140208ABECAB7EA67C20E6442311</code> <code>89B0461933710A89B955B0AC8E5F673E</code> <code>CEEF01E67E11408C7B6CD904505B8A94</code> <code>FF46094EA17DB1F854E5BFE709286FCA</code> <code>084EE6F2DD107BB2AEC2B9C9B22FB848</code> <code>94C235E589F99E5600F70BE8DBC5F6D9</code> <code>52C8EE0366D5F8CBB34EDF6DBEC96006</code> <code>06137FE19FDAEB648702832E85D23D0F</code> <code>E0EE74B26C180BAA05BEF38884BB2C6D</code> <code>FFD0C5E15CD1A3251D73CF8108A68E20</code> <code>2869811CECBBDC19728C800E911FD860</code> <code>541A3E7E4AFB6BF102CE1734316BC506</code> <code>9C76504E58F5C89A587748ED9B26E710</code><br> <code>361E7685</code></td>
|
|
|
|
|
<td><code>FE5001008DC5EDF4570B333797D9B0A3</code> <code>9B2803B5EFDD4DECE3D7305D1A05348C</code> <code>7EF11BAC05FD42853527D56914DDF9D4</code> <code>AA5C2A42CEF5493B67ED45605BB297DB</code> <code>2B2F0AED96B028BA3029F7A3D39C689B</code> <code>271C6B42A124EA9E82B6B473B844F2DC</code> <code>8B40E1589E88FA1AD7CB598904E540C6</code> <code>6B1AE111D26C74C0BA4261FBD313144F</code> <code>5106940A417E042B2553A55AD456154A</code> <code>D9F6C49D26D7CC7A853561539AD08A59</code> <code>B1B39D0D89671EABBE294246F1E2D038</code> <code>679D084DB0DFCFD26C4502B217C6EFCA</code> <code>8C66F8AFDE83A65241892CD2B13B4D81</code> <code>328E1A5182502E9E730C4847FFB797D0</code> <code>2799FDD268B3D6226198BF87D9558172</code> <code>D4BCFFB4BC54464369A9309488A0C67B</code> <code>B8E99190C66B8E7848E742C8FD5D3491</code> <code>ABDC4B238BCB512E1D56B52B4EB1A8E7</code> <code>4C664ABA560C80DF4152243BCCEFE78E</code> <code>51BCCBE29E7BF9867739B97891318C6C</code> <code>E9BAEC007B5B6708DD0C3DFD911AEA5C</code><br> <code>A552EB03</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 = 918EF0F9DCE0F0683826A7F9D24AE2C030AB787C0D3470DF5CBCDC6DB18972A570B191CA02C10D35534861D429B65D2467ED0DE42EA40C27B204AB97F462176B32462B4717FCC82792082B7201323E5CED8FEA6B516C88BE88DFAFA5C3C93B90E61ED63B4F62FFE845B192DCB85F3397FB631CEB240860EE6FE09DC06846899BE78AA8144416CF4743C1CF9B32FB769665979E85CFC8C6A6E96A687FBA1B41D6006F461F30E3435761C370C4E30B5DFCD35C880326CADFDDCBDE404C95E6EDECF4D1C75117F06E9381DC030B68E48D93C41A8ED5CD946D1226256A36B6FCBB75351CF201612D42525431B7C92FD2AA1366E708617758C27F95C529FEDFABF0BE</code></pre>
|
|
|
|
|
<pre><code>auth_key = 86E1807DB45ED838284D01E5DF7DE333F35B5B65F70D86204C06FC16442F50CBCFB749AFD9FED3234BBA4C997BEC0AA5761F08125569623021B67DE2811E9892A7D928C517BC678A3169CF3FBCD082A2AD5BA0B3AD667C7290F9361FF85D8C3EB1F404E54540154A56CCBAFBFFDDAD2E700C0B5E92A5274EFA27B825882EB21CEE9CF380CFD7BFD881EC7F20BD65F5022F77A84F0604A70FC3518A4A61E1EE9FFDE9677685C903428128251FAA7A99ADDC490ECE12B4C03055B8DE35B9F5E62F0A64923E3AD8CC7FC5F9B79098D35C5DE38A13C4D69A2BD8DE2EBB0854F533B7164C876DA5C4E804D9F8DCDD9CCC678E7C0F20B9DE86C012CA55A84A3955AFB6</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 C0 EE 08 A1 A1 38 67
|
|
|
|
|
0010 | 34 00 00 00 34 F7 CB 3B F3 C6 F3 84 6F CA 4D 6D
|
|
|
|
|
0020 | 5F 17 DC 5D C0 1C 36 7F BC D0 94 5F A8 89 89 60
|
|
|
|
|
0030 | F8 CD 69 F5 8E 1F 39 63 72 B9 66 1F DB 86 E9 F0
|
|
|
|
|
0040 | 49 C9 31 A9 01 6F 6C 39</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E0 1A CE DE A6 38 67
|
|
|
|
|
0010 | 34 00 00 00 34 F7 CB 3B F2 FF EB DA 55 A0 62 61
|
|
|
|
|
0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
|
|
|
|
|
0030 | D9 43 AB 98 93 64 1F B4 14 D2 0C 61 FB F8 BC D0
|
|
|
|
|
0040 | DF E5 90 21 13 41 D6 1D</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,7 +817,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>01C0EE08A1A13867</code></td>
|
|
|
|
|
<td><code>01E01ACEDEA63867</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>
|
|
|
|
@ -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>F3C6F3846FCA4D6D5F17DC5DC01C367F</code></td>
|
|
|
|
|
<td><code>F2FFEBDA55A0626190B657ACCDF39C05</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>BCD0945FA8898960F8CD69F58E1F3963</code></td>
|
|
|
|
|
<td><code>C897E4838C1A4733D943AB9893641FB4</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>72B9661FDB86E9F049C931A9016F6C39</code></td>
|
|
|
|
|
<td><code>14D20C61FBF8BCD0DFE590211341D61D</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>
|
|
|
|
|