mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-14 04:51:42 +01:00
Update content of files
This commit is contained in:
parent
c1a111c6b8
commit
cd88a6f46f
1 changed files with 206 additions and 206 deletions
|
@ -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 9C FB 05 00 87 23 C5 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 88 17 8D BF 34 91 B5 EF
|
||||
0020 | 33 6C A9 7A D0 15 59 A5</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 44 59 0D 00 54 27 C5 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 85 D5 BF 80 B1 89 FC 0C
|
||||
0020 | A6 C3 7E AB 82 79 C7 30</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>9CFB05008723C565</code></td>
|
||||
<td><code>44590D005427C565</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>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</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 10 36 84 87 23 C5 65
|
||||
0010 | BC 00 00 00 63 24 16 05 88 17 8D BF 34 91 B5 EF
|
||||
0020 | 33 6C A9 7A D0 15 59 A5 CE 81 B5 5B 3C 2D D3 D0
|
||||
0030 | 6D 0B AD C8 A6 5C 3C C6 08 2A B7 41 DD 0E FE 88
|
||||
0040 | 29 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 64 86 F8 54 27 C5 65
|
||||
0010 | 84 00 00 00 63 24 16 05 85 D5 BF 80 B1 89 FC 0C
|
||||
0020 | A6 C3 7E AB 82 79 C7 30 63 D2 48 C5 E0 9A 63 60
|
||||
0030 | 96 C3 54 3C 76 16 A3 5E 08 21 48 96 46 FB B5 25
|
||||
0040 | 9B 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>011036848723C565</code></td>
|
||||
<td><code>016486F85427C565</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>BC000000</code> (188 in decimal)</td>
|
||||
<td><code>84000000</code> (132 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>082AB741DD0EFE8829000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3078001288026163241</td>
|
||||
<td><code>0821489646FBB5259B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2398332033189619099</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 = 3078001288026163241</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>3078001288026163241 = 1727368561 * 1781901881</code></p>
|
||||
<pre><code>p = 1727368561
|
||||
q = 1781901881</code></pre>
|
||||
<pre><code>pq = 2398332033189619099</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2398332033189619099 = 1477226173 * 1623537463</code></p>
|
||||
<pre><code>p = 1477226173
|
||||
q = 1623537463</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 2A B7 41 DD 0E FE 88 29 00 00 00
|
||||
0010 | 04 66 F5 8D 71 00 00 00 04 6A 35 AA 39 00 00 00
|
||||
0020 | 88 17 8D BF 34 91 B5 EF 33 6C A9 7A D0 15 59 A5
|
||||
0030 | CE 81 B5 5B 3C 2D D3 D0 6D 0B AD C8 A6 5C 3C C6
|
||||
0040 | 0A 93 AF A7 83 90 90 A4 41 25 EB FC F5 14 AB 92
|
||||
0050 | 41 4D 43 79 21 52 96 BC 53 EB D7 6B 4B 21 5A CF
|
||||
<pre><code>0000 | 95 5F F5 A9 08 21 48 96 46 FB B5 25 9B 00 00 00
|
||||
0010 | 04 58 0C AE BD 00 00 00 04 60 C5 37 37 00 00 00
|
||||
0020 | 85 D5 BF 80 B1 89 FC 0C A6 C3 7E AB 82 79 C7 30
|
||||
0030 | 63 D2 48 C5 E0 9A 63 60 96 C3 54 3C 76 16 A3 5E
|
||||
0040 | 13 BC 04 D0 73 97 1F A0 1B 33 FD 07 4F CC 12 3C
|
||||
0050 | 33 BB 95 FC 8C DE 98 01 0B AE 62 05 42 9E 55 47
|
||||
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 = 1781901881</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>082AB741DD0EFE8829000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3078001288026163241</td>
|
||||
<td><code>0821489646FBB5259B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2398332033189619099</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>0466F58D71000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1727368561</td>
|
||||
<td><code>04580CAEBD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1477226173</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>046A35AA39000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1781901881</td>
|
||||
<td><code>0460C53737000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1623537463</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>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>0A93AFA7839090A44125EBFCF514AB92</code> <code>414D4379215296BC53EBD76B4B215ACF</code></td>
|
||||
<td><code>13BC04D073971FA01B33FD074FCC123C</code> <code>33BB95FC8CDE98010BAE6205429E5547</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1781901881</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 = 955FF5A9082AB741DD0EFE88290000000466F58D71000000046A35AA3900000088178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC60A93AFA7839090A44125EBFCF514AB92414D4379215296BC53EBD76B4B215ACF02000000
|
||||
random_padding_bytes = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26873B6E71E0CDC82B1B6E14BE6873D472EA33D5D9311DD90E47751BB9F3A5C15A79303F79EE584D675C54D146406ADE7AFE8B05020160E15D0ECDAA4F6F6F23D</code></pre>
|
||||
<pre><code>data = 955FF5A90821489646FBB5259B00000004580CAEBD0000000460C5373700000085D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E13BC04D073971FA01B33FD074FCC123C33BB95FC8CDE98010BAE6205429E554702000000
|
||||
random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C5B5569A9FE5E2472F7B962426E0ADEA1BB4030BEE3AA6A292908D5FD3408F5110F44E06601203D91CCF55D3CE7BA8B5FA85CBD4A77400A80B7F2FA0284C1FAC</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 = 2D434C69CBCAE40058A897EA17656E224D6D2C4AB402D858AAE6BD86AB536277F22ABFF4527B0ABD692ECAF36F82FD4D38A3B750FACFF2CD263FC467A92EDEFDB03728D7807F54FDBE3E01922E70142301BF5A924281597EDB4CB63EFB7100ECB4384D316A2D0358E76B7A06B5CF90CDFACD970740A54510FB76078E75E2057CAFFE4DFF1DEA366F3338ABF49747CA2869448B54FED6F559E2904179905BF91997CEFA3E39DE8803B5FCB3D7C7B5FF9934A54FAB5E96DFD4E7CD176AE366DC9D172BC6BE5599C224104BB0C86757DE10ECDCBC6986FC4755CC4F30D0B82D3762935E556B8D70192038F9DA955FAE22FF19E7A92281604191B301918BBAEA6E54</code></pre>
|
||||
<pre><code>encrypted_data = AB09AB1EAC21B3D1F9DAAF1684D4DC1D8216B3DC47A59FB8B5EF0AAADBCF8F9455061CE2D95CCEB91CD3D2EFDAEE11D6E7241D8A7B57E1AB937EF9BF5227E79B3EFBB06056B155ECE06DF6A5EDEBD013D4F6AC5F0BDFCDE1CBD3B7AFE213C230704FBC2E8DA608BD885CE7B624781E48341636ED752464A03E5806904B723208B6D953070A8B7A822F039A8051FA5ADED15B362850F5813B5F7F13D04657550346BD76380841DEE24F5993E8E8EB4AEADEBE6EBD72F0114D95AB85A9DE322596B6EE226F4D46952C1657A0FF474CD660C490FA6C17449625FD6D91C6B4700F911AEC5D58829014686411AB1B0D723C1FE66F2D1D9A9F9D234BB5ABAC1ED22DD1</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 F4 6A 0A 00 87 23 C5 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 88 17 8D BF 34 91 B5 EF
|
||||
0020 | 33 6C A9 7A D0 15 59 A5 CE 81 B5 5B 3C 2D D3 D0
|
||||
0030 | 6D 0B AD C8 A6 5C 3C C6 04 66 F5 8D 71 00 00 00
|
||||
0040 | 04 6A 35 AA 39 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 2D 43 4C 69 CB CA E4 00 58 A8 97 EA
|
||||
0060 | 17 65 6E 22 4D 6D 2C 4A B4 02 D8 58 AA E6 BD 86
|
||||
0070 | AB 53 62 77 F2 2A BF F4 52 7B 0A BD 69 2E CA F3
|
||||
0080 | 6F 82 FD 4D 38 A3 B7 50 FA CF F2 CD 26 3F C4 67
|
||||
0090 | A9 2E DE FD B0 37 28 D7 80 7F 54 FD BE 3E 01 92
|
||||
00A0 | 2E 70 14 23 01 BF 5A 92 42 81 59 7E DB 4C B6 3E
|
||||
00B0 | FB 71 00 EC B4 38 4D 31 6A 2D 03 58 E7 6B 7A 06
|
||||
00C0 | B5 CF 90 CD FA CD 97 07 40 A5 45 10 FB 76 07 8E
|
||||
00D0 | 75 E2 05 7C AF FE 4D FF 1D EA 36 6F 33 38 AB F4
|
||||
00E0 | 97 47 CA 28 69 44 8B 54 FE D6 F5 59 E2 90 41 79
|
||||
00F0 | 90 5B F9 19 97 CE FA 3E 39 DE 88 03 B5 FC B3 D7
|
||||
0100 | C7 B5 FF 99 34 A5 4F AB 5E 96 DF D4 E7 CD 17 6A
|
||||
0110 | E3 66 DC 9D 17 2B C6 BE 55 99 C2 24 10 4B B0 C8
|
||||
0120 | 67 57 DE 10 EC DC BC 69 86 FC 47 55 CC 4F 30 D0
|
||||
0130 | B8 2D 37 62 93 5E 55 6B 8D 70 19 20 38 F9 DA 95
|
||||
0140 | 5F AE 22 FF 19 E7 A9 22 81 60 41 91 B3 01 91 8B
|
||||
0150 | BA EA 6E 54</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 5C 94 0A 00 55 27 C5 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 85 D5 BF 80 B1 89 FC 0C
|
||||
0020 | A6 C3 7E AB 82 79 C7 30 63 D2 48 C5 E0 9A 63 60
|
||||
0030 | 96 C3 54 3C 76 16 A3 5E 04 58 0C AE BD 00 00 00
|
||||
0040 | 04 60 C5 37 37 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 AB 09 AB 1E AC 21 B3 D1 F9 DA AF 16
|
||||
0060 | 84 D4 DC 1D 82 16 B3 DC 47 A5 9F B8 B5 EF 0A AA
|
||||
0070 | DB CF 8F 94 55 06 1C E2 D9 5C CE B9 1C D3 D2 EF
|
||||
0080 | DA EE 11 D6 E7 24 1D 8A 7B 57 E1 AB 93 7E F9 BF
|
||||
0090 | 52 27 E7 9B 3E FB B0 60 56 B1 55 EC E0 6D F6 A5
|
||||
00A0 | ED EB D0 13 D4 F6 AC 5F 0B DF CD E1 CB D3 B7 AF
|
||||
00B0 | E2 13 C2 30 70 4F BC 2E 8D A6 08 BD 88 5C E7 B6
|
||||
00C0 | 24 78 1E 48 34 16 36 ED 75 24 64 A0 3E 58 06 90
|
||||
00D0 | 4B 72 32 08 B6 D9 53 07 0A 8B 7A 82 2F 03 9A 80
|
||||
00E0 | 51 FA 5A DE D1 5B 36 28 50 F5 81 3B 5F 7F 13 D0
|
||||
00F0 | 46 57 55 03 46 BD 76 38 08 41 DE E2 4F 59 93 E8
|
||||
0100 | E8 EB 4A EA DE BE 6E BD 72 F0 11 4D 95 AB 85 A9
|
||||
0110 | DE 32 25 96 B6 EE 22 6F 4D 46 95 2C 16 57 A0 FF
|
||||
0120 | 47 4C D6 60 C4 90 FA 6C 17 44 96 25 FD 6D 91 C6
|
||||
0130 | B4 70 0F 91 1A EC 5D 58 82 90 14 68 64 11 AB 1B
|
||||
0140 | 0D 72 3C 1F E6 6F 2D 1D 9A 9F 9D 23 4B B5 AB AC
|
||||
0150 | 1E D2 2D D1</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 = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>F46A0A008723C565</code></td>
|
||||
<td><code>5C940A005527C565</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 = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>0466F58D71000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1727368561</td>
|
||||
<td><code>04580CAEBD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1477226173</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>046A35AA39000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1781901881</td>
|
||||
<td><code>0460C53737000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1623537463</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 = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE0001002D434C69CBCAE40058A897EA</code> <code>17656E224D6D2C4AB402D858AAE6BD86</code> <code>AB536277F22ABFF4527B0ABD692ECAF3</code> <code>6F82FD4D38A3B750FACFF2CD263FC467</code> <code>A92EDEFDB03728D7807F54FDBE3E0192</code> <code>2E70142301BF5A924281597EDB4CB63E</code> <code>FB7100ECB4384D316A2D0358E76B7A06</code> <code>B5CF90CDFACD970740A54510FB76078E</code> <code>75E2057CAFFE4DFF1DEA366F3338ABF4</code> <code>9747CA2869448B54FED6F559E2904179</code> <code>905BF91997CEFA3E39DE8803B5FCB3D7</code> <code>C7B5FF9934A54FAB5E96DFD4E7CD176A</code> <code>E366DC9D172BC6BE5599C224104BB0C8</code> <code>6757DE10ECDCBC6986FC4755CC4F30D0</code> <code>B82D3762935E556B8D70192038F9DA95</code> <code>5FAE22FF19E7A92281604191B301918B</code><br> <code>BAEA6E54</code></td>
|
||||
<td><code>FE000100AB09AB1EAC21B3D1F9DAAF16</code> <code>84D4DC1D8216B3DC47A59FB8B5EF0AAA</code> <code>DBCF8F9455061CE2D95CCEB91CD3D2EF</code> <code>DAEE11D6E7241D8A7B57E1AB937EF9BF</code> <code>5227E79B3EFBB06056B155ECE06DF6A5</code> <code>EDEBD013D4F6AC5F0BDFCDE1CBD3B7AF</code> <code>E213C230704FBC2E8DA608BD885CE7B6</code> <code>24781E48341636ED752464A03E580690</code> <code>4B723208B6D953070A8B7A822F039A80</code> <code>51FA5ADED15B362850F5813B5F7F13D0</code> <code>4657550346BD76380841DEE24F5993E8</code> <code>E8EB4AEADEBE6EBD72F0114D95AB85A9</code> <code>DE322596B6EE226F4D46952C1657A0FF</code> <code>474CD660C490FA6C17449625FD6D91C6</code> <code>B4700F911AEC5D58829014686411AB1B</code> <code>0D723C1FE66F2D1D9A9F9D234BB5ABAC</code><br> <code>1ED22DD1</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26
|
|||
<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 08 75 3C 88 23 C5 65
|
||||
0010 | A8 02 00 00 5C 07 E8 D0 88 17 8D BF 34 91 B5 EF
|
||||
0020 | 33 6C A9 7A D0 15 59 A5 CE 81 B5 5B 3C 2D D3 D0
|
||||
0030 | 6D 0B AD C8 A6 5C 3C C6 FE 50 02 00 9F F8 6B 91
|
||||
0040 | 99 F1 DB 37 43 29 20 81 24 F1 0A 1C FB 5D 3A 17
|
||||
0050 | E3 7D 6D 4C 78 CE 80 9C A3 A5 69 10 61 CC 78 6E
|
||||
0060 | AB 81 00 71 B1 F6 62 56 E3 2A 1A 86 AB DA 50 F3
|
||||
0070 | 5A C6 DF D2 3E 80 C2 CF 5E 41 7E 38 8E DF 0F D9
|
||||
0080 | 4F 66 7E 1F 5B 17 32 D5 BF 73 16 87 1B 71 4A 03
|
||||
0090 | 21 53 9B DC 6E 24 A6 54 DE B6 71 D1 2B 45 E9 89
|
||||
00A0 | 15 21 DC 81 CE 38 C6 12 E9 15 74 2E 95 D3 8C 95
|
||||
00B0 | 6D 64 49 C2 17 75 AB 38 57 4C 2A 98 76 82 72 68
|
||||
00C0 | 42 AF B2 52 CD 14 FC B7 F5 17 00 0A C9 BF 03 10
|
||||
00D0 | DA 2E E4 00 10 29 C3 E0 84 D4 F2 48 C0 C4 8B 75
|
||||
00E0 | 7D 97 BD 36 C3 B4 9D 10 B4 BE 93 8E 86 DE CF 2F
|
||||
00F0 | BD A9 52 D4 84 70 52 AE D2 46 70 D1 EA F9 73 CE
|
||||
0100 | 14 98 05 42 D3 09 4D 4E 72 F0 07 DE 19 B5 48 13
|
||||
0110 | F9 B0 69 11 81 ED 49 E1 D6 73 63 FD 30 54 CE 5D
|
||||
0120 | E6 37 D4 5E 8D 3E 43 2E CE 8A A0 B0 CF A2 03 7C
|
||||
0130 | E1 5E 92 96 34 BC FE 31 B8 52 8C 37 2B E6 3C CA
|
||||
0140 | 64 33 81 43 6F C7 B8 15 99 14 C0 EA F5 3D CA 06
|
||||
0150 | D1 68 6C A6 89 F5 EE 20 CE AA 85 7D 4A 4B C9 AF
|
||||
0160 | FE 35 FA 9B 0D D8 7C 12 13 82 B9 CC 8D 27 FD 2B
|
||||
0170 | 49 54 F7 81 A6 60 BF 2A BA E4 5E 09 92 33 7E 94
|
||||
0180 | 95 3A 19 B5 19 DE 08 A0 A5 95 F2 80 0F AD C1 70
|
||||
0190 | 2B B5 D4 1D 3E 82 35 9D D4 23 BF FC F3 02 AF 09
|
||||
01A0 | C0 DB 14 83 F1 CA 10 7D 14 9C F7 72 08 CE 49 4C
|
||||
01B0 | 27 61 09 7F 12 4A 6C 36 48 19 82 B7 98 65 28 68
|
||||
01C0 | C0 29 EF F8 1C 83 CF 5A E7 B1 FB AC 85 86 0D D0
|
||||
01D0 | F9 ED B3 3B E6 12 5B 09 CE 8A 81 2C 12 33 58 0F
|
||||
01E0 | 76 C7 9D 13 49 92 8F 63 38 7F E0 73 8A 08 22 8E
|
||||
01F0 | 98 83 3F 85 F1 96 6A A1 8D EE CF 49 9E 54 A9 3C
|
||||
0200 | 43 81 FD 63 00 77 5F A0 2E B9 3E 06 E0 8D 8C B7
|
||||
0210 | 5D 0A 97 D5 91 3A 82 77 17 8D 29 39 2A 84 BC B9
|
||||
0220 | 56 12 8F F5 0A C2 0E DC 6B DA 87 C0 13 9C 3E A0
|
||||
0230 | E5 42 18 7B 8A F6 B3 AB DA 0B 27 1F 21 57 CE 3F
|
||||
0240 | 01 F7 74 C9 E9 63 A0 FA 3B DB 9A 7D 44 7E 87 F2
|
||||
0250 | FF DF 57 C9 00 20 94 05 5C 53 91 93 AE 14 02 3D
|
||||
0260 | 48 98 D5 E2 8A 8A 85 A1 53 54 DE 3B C2 2B 53 E7
|
||||
0270 | 17 57 AD 38 12 4C A1 F6 B6 34 8B E6 EE 6E 9F 87
|
||||
0280 | E1 C8 78 8C 7D 90 3A BC 53 23 AC 88</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 DC B1 C7 55 27 C5 65
|
||||
0010 | C4 02 00 00 5C 07 E8 D0 85 D5 BF 80 B1 89 FC 0C
|
||||
0020 | A6 C3 7E AB 82 79 C7 30 63 D2 48 C5 E0 9A 63 60
|
||||
0030 | 96 C3 54 3C 76 16 A3 5E FE 50 02 00 E6 71 FE FB
|
||||
0040 | B4 B2 A9 9F B2 D7 19 6D 1F FE B4 69 78 9E 2B 34
|
||||
0050 | A0 CC F2 3A 20 F4 42 C6 7C 8E 9C 0F 88 E0 AB 61
|
||||
0060 | AA 53 16 8D 3D B9 CE 49 2D 4F 23 F3 5A 87 62 B3
|
||||
0070 | 47 93 09 AA DC F9 16 AC 20 AE 34 F6 58 26 DC 16
|
||||
0080 | EE 0A 02 18 72 9C 22 A6 86 F8 4D 18 14 33 66 58
|
||||
0090 | A8 B8 76 16 ED 85 6C C8 C6 B2 83 F4 90 68 CE 5A
|
||||
00A0 | 94 35 40 C9 69 BA 6D 74 CD 15 E4 78 EC 4C 9E 1A
|
||||
00B0 | 56 72 A0 65 00 C0 9B 19 FA CD 08 74 90 85 DC C0
|
||||
00C0 | 95 90 20 47 E8 6A 8F 90 46 D6 20 42 3F 5F F8 ED
|
||||
00D0 | 03 8E 1C E3 A4 BC 20 36 BB 79 C0 52 8E 95 0F 45
|
||||
00E0 | 58 ED 19 C0 A6 2D 45 0C 41 E9 A3 24 85 93 DE CE
|
||||
00F0 | 48 88 DA 2B 44 F9 EB 93 8E 29 FD DD 95 60 83 C5
|
||||
0100 | 34 6D 30 D5 8B 56 EE 95 52 6D 7B 6B 83 E5 9B A4
|
||||
0110 | 3F 5D FB EF AE 6C 34 A8 38 94 4B CD 6D A2 48 64
|
||||
0120 | 68 91 22 01 08 CA 36 C7 7E 89 4A 6A 6A 69 53 85
|
||||
0130 | 7F A4 1D DE 73 DE 9B 56 6B 32 8C C9 F8 26 37 4B
|
||||
0140 | 48 9C 22 D5 0C 17 8A 2C A4 80 80 9A F0 7C FE 08
|
||||
0150 | 81 A4 CE 42 69 19 1E B6 34 1F CF BB F5 0B CB 57
|
||||
0160 | E2 EF E0 A3 34 84 6F AF 1E EC B3 81 FB BD 1E F6
|
||||
0170 | 6C 5E 2C F5 B7 1F 35 E4 0F 3C 78 8B E3 58 4C D1
|
||||
0180 | 0F 87 15 CA 7C 84 9F E7 42 7B 50 F6 7D 1D 90 FB
|
||||
0190 | BF 96 4B 2A 47 3E 2A 86 1B C7 DA 35 4C 7D 46 6C
|
||||
01A0 | 45 70 C0 DA 59 46 DF 67 03 F2 D5 D1 DE 17 99 A2
|
||||
01B0 | AF 3D 4E 06 84 85 46 09 BB E9 C6 07 E7 CF A1 4B
|
||||
01C0 | D9 DE 99 60 DD 07 7C 3A 43 49 16 73 01 75 4C 72
|
||||
01D0 | 4B 77 23 64 FD A9 71 31 DA 1C 22 9A 52 43 17 6B
|
||||
01E0 | 9C 4F 88 5D 2B DD A9 05 9B BD 18 30 70 9E 64 63
|
||||
01F0 | BE F6 2A CA C2 8B E7 D9 4F 7A 0D 77 F4 BA 82 1A
|
||||
0200 | 75 EC 87 CA D6 A7 0A 83 BA 11 62 F6 71 8B C4 41
|
||||
0210 | E3 C2 42 03 2F 91 82 04 B6 6C 6E 95 DE 38 83 5C
|
||||
0220 | 88 E0 1C A4 53 38 FE 6B D3 6E 6D 4E 94 D9 89 23
|
||||
0230 | CA 85 EA 69 4A 34 2D 6E 91 3B 95 D6 BE 40 D7 B5
|
||||
0240 | 00 02 8D D4 B0 B8 71 4D 81 69 E4 F0 FA 40 B7 B3
|
||||
0250 | BE 86 1A 82 73 87 BA A1 FC B1 BF 9E 72 F2 6D EB
|
||||
0260 | 55 92 86 AC CE 0A 65 60 70 20 28 3D 91 BE 22 C1
|
||||
0270 | 25 E5 B5 8A D1 EA E0 34 A7 EB 89 66 6C EA 8C 0B
|
||||
0280 | 0C 51 E1 F5 9E A2 55 7F DD 56 E8 81</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 = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>0108753C8823C565</code></td>
|
||||
<td><code>01DCB1C75527C565</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>A8020000</code> (680 in decimal)</td>
|
||||
<td><code>C4020000</code> (708 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE5002009FF86B9199F1DB3743292081</code> <code>24F10A1CFB5D3A17E37D6D4C78CE809C</code> <code>A3A5691061CC786EAB810071B1F66256</code> <code>E32A1A86ABDA50F35AC6DFD23E80C2CF</code> <code>5E417E388EDF0FD94F667E1F5B1732D5</code> <code>BF7316871B714A0321539BDC6E24A654</code> <code>DEB671D12B45E9891521DC81CE38C612</code> <code>E915742E95D38C956D6449C21775AB38</code> <code>574C2A987682726842AFB252CD14FCB7</code> <code>F517000AC9BF0310DA2EE4001029C3E0</code> <code>84D4F248C0C48B757D97BD36C3B49D10</code> <code>B4BE938E86DECF2FBDA952D4847052AE</code> <code>D24670D1EAF973CE14980542D3094D4E</code> <code>72F007DE19B54813F9B0691181ED49E1</code> <code>D67363FD3054CE5DE637D45E8D3E432E</code> <code>CE8AA0B0CFA2037CE15E929634BCFE31</code> <code>B8528C372BE63CCA643381436FC7B815</code> <code>9914C0EAF53DCA06D1686CA689F5EE20</code> <code>CEAA857D4A4BC9AFFE35FA9B0DD87C12</code> <code>1382B9CC8D27FD2B4954F781A660BF2A</code> <code>BAE45E0992337E94953A19B519DE08A0</code> <code>A595F2800FADC1702BB5D41D3E82359D</code> <code>D423BFFCF302AF09C0DB1483F1CA107D</code> <code>149CF77208CE494C2761097F124A6C36</code> <code>481982B798652868C029EFF81C83CF5A</code> <code>E7B1FBAC85860DD0F9EDB33BE6125B09</code> <code>CE8A812C1233580F76C79D1349928F63</code> <code>387FE0738A08228E98833F85F1966AA1</code> <code>8DEECF499E54A93C4381FD6300775FA0</code> <code>2EB93E06E08D8CB75D0A97D5913A8277</code> <code>178D29392A84BCB956128FF50AC20EDC</code> <code>6BDA87C0139C3EA0E542187B8AF6B3AB</code> <code>DA0B271F2157CE3F01F774C9E963A0FA</code> <code>3BDB9A7D447E87F2FFDF57C900209405</code> <code>5C539193AE14023D4898D5E28A8A85A1</code> <code>5354DE3BC22B53E71757AD38124CA1F6</code> <code>B6348BE6EE6E9F87E1C8788C7D903ABC</code><br> <code>5323AC88</code></td>
|
||||
<td><code>FE500200E671FEFBB4B2A99FB2D7196D</code> <code>1FFEB469789E2B34A0CCF23A20F442C6</code> <code>7C8E9C0F88E0AB61AA53168D3DB9CE49</code> <code>2D4F23F35A8762B3479309AADCF916AC</code> <code>20AE34F65826DC16EE0A0218729C22A6</code> <code>86F84D1814336658A8B87616ED856CC8</code> <code>C6B283F49068CE5A943540C969BA6D74</code> <code>CD15E478EC4C9E1A5672A06500C09B19</code> <code>FACD08749085DCC095902047E86A8F90</code> <code>46D620423F5FF8ED038E1CE3A4BC2036</code> <code>BB79C0528E950F4558ED19C0A62D450C</code> <code>41E9A3248593DECE4888DA2B44F9EB93</code> <code>8E29FDDD956083C5346D30D58B56EE95</code> <code>526D7B6B83E59BA43F5DFBEFAE6C34A8</code> <code>38944BCD6DA248646891220108CA36C7</code> <code>7E894A6A6A6953857FA41DDE73DE9B56</code> <code>6B328CC9F826374B489C22D50C178A2C</code> <code>A480809AF07CFE0881A4CE4269191EB6</code> <code>341FCFBBF50BCB57E2EFE0A334846FAF</code> <code>1EECB381FBBD1EF66C5E2CF5B71F35E4</code> <code>0F3C788BE3584CD10F8715CA7C849FE7</code> <code>427B50F67D1D90FBBF964B2A473E2A86</code> <code>1BC7DA354C7D466C4570C0DA5946DF67</code> <code>03F2D5D1DE1799A2AF3D4E0684854609</code> <code>BBE9C607E7CFA14BD9DE9960DD077C3A</code> <code>4349167301754C724B772364FDA97131</code> <code>DA1C229A5243176B9C4F885D2BDDA905</code> <code>9BBD1830709E6463BEF62ACAC28BE7D9</code> <code>4F7A0D77F4BA821A75EC87CAD6A70A83</code> <code>BA1162F6718BC441E3C242032F918204</code> <code>B66C6E95DE38835C88E01CA45338FE6B</code> <code>D36E6D4E94D98923CA85EA694A342D6E</code> <code>913B95D6BE40D7B500028DD4B0B8714D</code> <code>8169E4F0FA40B7B3BE861A827387BAA1</code> <code>FCB1BF9E72F26DEB559286ACCE0A6560</code> <code>7020283D91BE22C125E5B58AD1EAE034</code> <code>A7EB89666CEA8C0B0C51E1F59EA2557F</code><br> <code>DD56E881</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = F20E5907A1BD38A0160B10126B6D33DDE54D5E3429F5F4EC0B330BB26
|
|||
<!-- 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 = 9FF86B9199F1DB374329208124F10A1CFB5D3A17E37D6D4C78CE809CA3A5691061CC786EAB810071B1F66256E32A1A86ABDA50F35AC6DFD23E80C2CF5E417E388EDF0FD94F667E1F5B1732D5BF7316871B714A0321539BDC6E24A654DEB671D12B45E9891521DC81CE38C612E915742E95D38C956D6449C21775AB38574C2A987682726842AFB252CD14FCB7F517000AC9BF0310DA2EE4001029C3E084D4F248C0C48B757D97BD36C3B49D10B4BE938E86DECF2FBDA952D4847052AED24670D1EAF973CE14980542D3094D4E72F007DE19B54813F9B0691181ED49E1D67363FD3054CE5DE637D45E8D3E432ECE8AA0B0CFA2037CE15E929634BCFE31B8528C372BE63CCA643381436FC7B8159914C0EAF53DCA06D1686CA689F5EE20CEAA857D4A4BC9AFFE35FA9B0DD87C121382B9CC8D27FD2B4954F781A660BF2ABAE45E0992337E94953A19B519DE08A0A595F2800FADC1702BB5D41D3E82359DD423BFFCF302AF09C0DB1483F1CA107D149CF77208CE494C2761097F124A6C36481982B798652868C029EFF81C83CF5AE7B1FBAC85860DD0F9EDB33BE6125B09CE8A812C1233580F76C79D1349928F63387FE0738A08228E98833F85F1966AA18DEECF499E54A93C4381FD6300775FA02EB93E06E08D8CB75D0A97D5913A8277178D29392A84BCB956128FF50AC20EDC6BDA87C0139C3EA0E542187B8AF6B3ABDA0B271F2157CE3F01F774C9E963A0FA3BDB9A7D447E87F2FFDF57C9002094055C539193AE14023D4898D5E28A8A85A15354DE3BC22B53E71757AD38124CA1F6B6348BE6EE6E9F87E1C8788C7D903ABC5323AC88
|
||||
tmp_aes_key = C2907E6720FE2B8205E13C16DF12389B14205FB7A299054E3571FE78F50B0789
|
||||
tmp_aes_iv = 741D3A5C7F5DFE38E585586FE2CDEAD6EBF8E319A0EEAF466F8D756B0A93AFA7</code></pre>
|
||||
<pre><code>encrypted_answer = E671FEFBB4B2A99FB2D7196D1FFEB469789E2B34A0CCF23A20F442C67C8E9C0F88E0AB61AA53168D3DB9CE492D4F23F35A8762B3479309AADCF916AC20AE34F65826DC16EE0A0218729C22A686F84D1814336658A8B87616ED856CC8C6B283F49068CE5A943540C969BA6D74CD15E478EC4C9E1A5672A06500C09B19FACD08749085DCC095902047E86A8F9046D620423F5FF8ED038E1CE3A4BC2036BB79C0528E950F4558ED19C0A62D450C41E9A3248593DECE4888DA2B44F9EB938E29FDDD956083C5346D30D58B56EE95526D7B6B83E59BA43F5DFBEFAE6C34A838944BCD6DA248646891220108CA36C77E894A6A6A6953857FA41DDE73DE9B566B328CC9F826374B489C22D50C178A2CA480809AF07CFE0881A4CE4269191EB6341FCFBBF50BCB57E2EFE0A334846FAF1EECB381FBBD1EF66C5E2CF5B71F35E40F3C788BE3584CD10F8715CA7C849FE7427B50F67D1D90FBBF964B2A473E2A861BC7DA354C7D466C4570C0DA5946DF6703F2D5D1DE1799A2AF3D4E0684854609BBE9C607E7CFA14BD9DE9960DD077C3A4349167301754C724B772364FDA97131DA1C229A5243176B9C4F885D2BDDA9059BBD1830709E6463BEF62ACAC28BE7D94F7A0D77F4BA821A75EC87CAD6A70A83BA1162F6718BC441E3C242032F918204B66C6E95DE38835C88E01CA45338FE6BD36E6D4E94D98923CA85EA694A342D6E913B95D6BE40D7B500028DD4B0B8714D8169E4F0FA40B7B3BE861A827387BAA1FCB1BF9E72F26DEB559286ACCE0A65607020283D91BE22C125E5B58AD1EAE034A7EB89666CEA8C0B0C51E1F59EA2557FDD56E881
|
||||
tmp_aes_key = B64E760C2EA83BA9EDA2DA7E5826A518B6D82CE469DE416A140B25AACB7AA41B
|
||||
tmp_aes_iv = 279F8786E2A347AF1284D523F2EF9589DE890EEE25235638E1CA610A13BC04D0</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = C25C8C57AB8ABA31334006F94D3E0F7ACA3D2D15BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004CF9D005AA6C3E3DD92042E554580A9550F2CC424C0CD756F51A7CD087BD6AF21EA69B6F99C24C3B032B20F1286E633EC6C6B40F1C806E1FD096BF08BFF21FEB3C216DA17C629AA96D22AC672C73167B243BB264318DEC206D89FCC504B2F00802176B97B3B2679119631953165A09061BCD1B46632CE995D7A294E60D2E8D89F507BEB3BE89E52DF6A0A24DE7DC8E1CF57E817679CCFDD13D032AC05AE030D1F46298BE0EA4BBB82945D2016A83092A2E60CA6E4B1ADC2F0A186047B499A1A29B8E1BD4D33F34127EF7D87292F4FBC85DB27197435532ED7DCECF1BF9A7EB44A25E55CA3EB3E045CF20EB43E787BF27002CED9E7CA3236F7069FB9A7ACA776C8823C56508B2AB383B33FBF5
|
||||
answer = BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004CF9D005AA6C3E3DD92042E554580A9550F2CC424C0CD756F51A7CD087BD6AF21EA69B6F99C24C3B032B20F1286E633EC6C6B40F1C806E1FD096BF08BFF21FEB3C216DA17C629AA96D22AC672C73167B243BB264318DEC206D89FCC504B2F00802176B97B3B2679119631953165A09061BCD1B46632CE995D7A294E60D2E8D89F507BEB3BE89E52DF6A0A24DE7DC8E1CF57E817679CCFDD13D032AC05AE030D1F46298BE0EA4BBB82945D2016A83092A2E60CA6E4B1ADC2F0A186047B499A1A29B8E1BD4D33F34127EF7D87292F4FBC85DB27197435532ED7DCECF1BF9A7EB44A25E55CA3EB3E045CF20EB43E787BF27002CED9E7CA3236F7069FB9A7ACA776C8823C56508B2AB383B33FBF5</code></pre>
|
||||
<pre><code>answer_with_hash = EB47937161D3E7E6E038995C4465F21BBB695AC2BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073BE87B3EDC77461298DDECD1B9F9E37301A903111767C4B27BC97A6BF6EACD991CA46BBCA1BB63DF693D128C5D1B7142BA62ECA5C6C404AC30D1748E4341C92BD3258729A702D255A12381BB95DC13909505F9664EC2EF58366D00618258549B148955C05081C722D4B4DCA51E1B24E840BB2F09928C85B446058C7C810A4E650CCF0A1F61B6FF562FB2C7B902DDAEC000FB28D9703CB45F6FB143C896B6E17FBBEA9817A74259615BD8D884714659EA06B85FD9FF96CB14B4846FF46451D088AFDDCACD60C0C90741E9708FF664361E6B81E62E6AA95A4BCDF4E7C4AE9722112E3684937BBDEA97289012BFA0B4092F5F3D9E65447B00FA549A8F171C35B875527C565360299833531B6A5
|
||||
answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073BE87B3EDC77461298DDECD1B9F9E37301A903111767C4B27BC97A6BF6EACD991CA46BBCA1BB63DF693D128C5D1B7142BA62ECA5C6C404AC30D1748E4341C92BD3258729A702D255A12381BB95DC13909505F9664EC2EF58366D00618258549B148955C05081C722D4B4DCA51E1B24E840BB2F09928C85B446058C7C810A4E650CCF0A1F61B6FF562FB2C7B902DDAEC000FB28D9703CB45F6FB143C896B6E17FBBEA9817A74259615BD8D884714659EA06B85FD9FF96CB14B4846FF46451D088AFDDCACD60C0C90741E9708FF664361E6B81E62E6AA95A4BCDF4E7C4AE9722112E3684937BBDEA97289012BFA0B4092F5F3D9E65447B00FA549A8F171C35B875527C565360299833531B6A5</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 88 17 8D BF 34 91 B5 EF 33 6C A9 7A
|
||||
0010 | D0 15 59 A5 CE 81 B5 5B 3C 2D D3 D0 6D 0B AD C8
|
||||
0020 | A6 5C 3C C6 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 85 D5 BF 80 B1 89 FC 0C A6 C3 7E AB
|
||||
0010 | 82 79 C7 30 63 D2 48 C5 E0 9A 63 60 96 C3 54 3C
|
||||
0020 | 76 16 A3 5E 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 = BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC
|
|||
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 | 4C F9 D0 05 AA 6C 3E 3D D9 20 42 E5 54 58 0A 95
|
||||
0140 | 50 F2 CC 42 4C 0C D7 56 F5 1A 7C D0 87 BD 6A F2
|
||||
0150 | 1E A6 9B 6F 99 C2 4C 3B 03 2B 20 F1 28 6E 63 3E
|
||||
0160 | C6 C6 B4 0F 1C 80 6E 1F D0 96 BF 08 BF F2 1F EB
|
||||
0170 | 3C 21 6D A1 7C 62 9A A9 6D 22 AC 67 2C 73 16 7B
|
||||
0180 | 24 3B B2 64 31 8D EC 20 6D 89 FC C5 04 B2 F0 08
|
||||
0190 | 02 17 6B 97 B3 B2 67 91 19 63 19 53 16 5A 09 06
|
||||
01A0 | 1B CD 1B 46 63 2C E9 95 D7 A2 94 E6 0D 2E 8D 89
|
||||
01B0 | F5 07 BE B3 BE 89 E5 2D F6 A0 A2 4D E7 DC 8E 1C
|
||||
01C0 | F5 7E 81 76 79 CC FD D1 3D 03 2A C0 5A E0 30 D1
|
||||
01D0 | F4 62 98 BE 0E A4 BB B8 29 45 D2 01 6A 83 09 2A
|
||||
01E0 | 2E 60 CA 6E 4B 1A DC 2F 0A 18 60 47 B4 99 A1 A2
|
||||
01F0 | 9B 8E 1B D4 D3 3F 34 12 7E F7 D8 72 92 F4 FB C8
|
||||
0200 | 5D B2 71 97 43 55 32 ED 7D CE CF 1B F9 A7 EB 44
|
||||
0210 | A2 5E 55 CA 3E B3 E0 45 CF 20 EB 43 E7 87 BF 27
|
||||
0220 | 00 2C ED 9E 7C A3 23 6F 70 69 FB 9A 7A CA 77 6C
|
||||
0230 | 88 23 C5 65</code></pre>
|
||||
0130 | 73 BE 87 B3 ED C7 74 61 29 8D DE CD 1B 9F 9E 37
|
||||
0140 | 30 1A 90 31 11 76 7C 4B 27 BC 97 A6 BF 6E AC D9
|
||||
0150 | 91 CA 46 BB CA 1B B6 3D F6 93 D1 28 C5 D1 B7 14
|
||||
0160 | 2B A6 2E CA 5C 6C 40 4A C3 0D 17 48 E4 34 1C 92
|
||||
0170 | BD 32 58 72 9A 70 2D 25 5A 12 38 1B B9 5D C1 39
|
||||
0180 | 09 50 5F 96 64 EC 2E F5 83 66 D0 06 18 25 85 49
|
||||
0190 | B1 48 95 5C 05 08 1C 72 2D 4B 4D CA 51 E1 B2 4E
|
||||
01A0 | 84 0B B2 F0 99 28 C8 5B 44 60 58 C7 C8 10 A4 E6
|
||||
01B0 | 50 CC F0 A1 F6 1B 6F F5 62 FB 2C 7B 90 2D DA EC
|
||||
01C0 | 00 0F B2 8D 97 03 CB 45 F6 FB 14 3C 89 6B 6E 17
|
||||
01D0 | FB BE A9 81 7A 74 25 96 15 BD 8D 88 47 14 65 9E
|
||||
01E0 | A0 6B 85 FD 9F F9 6C B1 4B 48 46 FF 46 45 1D 08
|
||||
01F0 | 8A FD DC AC D6 0C 0C 90 74 1E 97 08 FF 66 43 61
|
||||
0200 | E6 B8 1E 62 E6 AA 95 A4 BC DF 4E 7C 4A E9 72 21
|
||||
0210 | 12 E3 68 49 37 BB DE A9 72 89 01 2B FA 0B 40 92
|
||||
0220 | F5 F3 D9 E6 54 47 B0 0F A5 49 A8 F1 71 C3 5B 87
|
||||
0230 | 55 27 C5 65</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -570,13 +570,13 @@ answer = BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE0001004CF9D005AA6C3E3DD92042E5</code> <code>54580A9550F2CC424C0CD756F51A7CD0</code> <code>87BD6AF21EA69B6F99C24C3B032B20F1</code> <code>286E633EC6C6B40F1C806E1FD096BF08</code> <code>BFF21FEB3C216DA17C629AA96D22AC67</code> <code>2C73167B243BB264318DEC206D89FCC5</code> <code>04B2F00802176B97B3B2679119631953</code> <code>165A09061BCD1B46632CE995D7A294E6</code> <code>0D2E8D89F507BEB3BE89E52DF6A0A24D</code> <code>E7DC8E1CF57E817679CCFDD13D032AC0</code> <code>5AE030D1F46298BE0EA4BBB82945D201</code> <code>6A83092A2E60CA6E4B1ADC2F0A186047</code> <code>B499A1A29B8E1BD4D33F34127EF7D872</code> <code>92F4FBC85DB27197435532ED7DCECF1B</code> <code>F9A7EB44A25E55CA3EB3E045CF20EB43</code> <code>E787BF27002CED9E7CA3236F7069FB9A</code><br> <code>7ACA776C</code></td>
|
||||
<td><code>FE00010073BE87B3EDC77461298DDECD</code> <code>1B9F9E37301A903111767C4B27BC97A6</code> <code>BF6EACD991CA46BBCA1BB63DF693D128</code> <code>C5D1B7142BA62ECA5C6C404AC30D1748</code> <code>E4341C92BD3258729A702D255A12381B</code> <code>B95DC13909505F9664EC2EF58366D006</code> <code>18258549B148955C05081C722D4B4DCA</code> <code>51E1B24E840BB2F09928C85B446058C7</code> <code>C810A4E650CCF0A1F61B6FF562FB2C7B</code> <code>902DDAEC000FB28D9703CB45F6FB143C</code> <code>896B6E17FBBEA9817A74259615BD8D88</code> <code>4714659EA06B85FD9FF96CB14B4846FF</code> <code>46451D088AFDDCACD60C0C90741E9708</code> <code>FF664361E6B81E62E6AA95A4BCDF4E7C</code> <code>4AE9722112E3684937BBDEA97289012B</code> <code>FA0B4092F5F3D9E65447B00FA549A8F1</code><br> <code>71C35B87</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>8823C565</code> (1707418504 in decimal)</td>
|
||||
<td><code>5527C565</code> (1707419477 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC
|
|||
<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 = 1B560BDB1C57F4409E421A508D61543589BD5AAE5B9AB960B183983993752FAA4FD9F10EE63EFCA5ACF942ACF224CF725132B1368F2037D152A1EF956FE6FFA5DEEA80448EC68D010C6D15F1F056B6BC2A1D4DF2B5AA26852544D4B0F23E2DACE57D7BA89D1802D32F04EBE8488E680783F9B8E2253A20D13C831E14DFA2729FC5B5200C8D4A6562AD03DD7C1DC352E9D97F241D18895D16863AC50789F368D8C6531FF7650ABE9B52D63B99CA529803638E5E21DB23780F61458BB28E90EE375861144A78B4B1BBBC2F5477E35ADADDD4A36169751C932434E287346C60B45A1DB8F1BE234B60F9ACCFC901E90D025C7A45627D9FBDE835090CE62BAD8C564B</code></pre>
|
||||
<pre><code>b = F9D5F8A3A43686CC4EC12727388730C47ACDB2ABC2AC2CA25BD5DDA1389FE47B7BBA499BF3C396BDBF6923FE590E9772073C8C6406C29FCFEA1AD41513C26348DF2DC03042CB44426670E2C0D6494C9B26413BF021BC3AC29BA44B78B5EF5EE7EB07FBB5A6D4663F49DF4CA3B73380322B4A8C27CAAD2ED81C0D06217428C3EB57C2D96DA00C6C8E851A1DF03237276F4FE8147359205A7AF7EFAB0E251DCE371D8E44F124AF6E672C78F7F8753D7FB335FE0B299C7432173DB85FF1DBAB1D2C24B78EF3C8AA400923211673D56C0F398CCCDCB2EA36D5FE38E7D3B64A3D160EF7B0FF682E7A9D49FCBFFEE5C21343B940285FE77E8DE18C6A8706132FA432C7</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 = 24DBA6A1F7C7A543B9CDBFB7B1C4637D74F227528DDEF003A43CA74F0EB2D7C84F109B792115DFD993C2C9113AC7C4F46221E64080C54E1873F2AF83CB690B04796218C26548055B9D1AE83ABF417FEEA58A8BC3C22787580FB34568EDECE3BA8EA20529845E51D373B9BE6CF71353E4A074CDC4E7CE5D510A6B0D6F0B6FF4832928B42BAAE151F5E21CDC77ABBD2E5824825E4A72D6A8996ABEC76B54501F6213EDA9AF819806624FA800505929B14DAC951011E071A19D0766291D3D3AC22FCC040E0CAA52E1B753B9AE07F867112224CFF7F9F44EB1148B60AFFB3197155BE7F4B9D8DA5503F7E989F703CC7F70677055F21F89AB5C226352F76F976137B6</code></pre>
|
||||
<pre><code>g_b = 40D09EB7C6A7B0717B564A74A7C11B3E34809E3124C099892293A21DC0B576A417DAF6BE9DB6D8BFFD959AA40E4D60AD66134A3FAF69B815ED71A8E7E84BD405FBAE96B69DE961538959526FD77AA534E1F6B10916D6D112A38D330C2937333D82B5FDF97B5A7FF3E56AA51E507A0614FE379929BF90A02860AD82E48CE48E2C8A3B7FD853B6AB9EBEE5CEDD1EFC7BADBD3B05704CC2DD7FF3130B0FA7F4DA041DD6C7EBC8C2FDFBBBF03181A306966469226F361EE479C5F9DB8082A00598AB42DBC45397AEF1DD7EDEDBC8D5B6A6F85F995DA60B55014CD26BA9B033C46118608097D50470EB69E171D276429BB6D53F4A13FF717EB9E23EA8D51C76698368</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 88 17 8D BF 34 91 B5 EF 33 6C A9 7A
|
||||
0010 | D0 15 59 A5 CE 81 B5 5B 3C 2D D3 D0 6D 0B AD C8
|
||||
0020 | A6 5C 3C C6 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 24 DB A6 A1 F7 C7 A5 43 B9 CD BF B7 B1 C4 63 7D
|
||||
0040 | 74 F2 27 52 8D DE F0 03 A4 3C A7 4F 0E B2 D7 C8
|
||||
0050 | 4F 10 9B 79 21 15 DF D9 93 C2 C9 11 3A C7 C4 F4
|
||||
0060 | 62 21 E6 40 80 C5 4E 18 73 F2 AF 83 CB 69 0B 04
|
||||
0070 | 79 62 18 C2 65 48 05 5B 9D 1A E8 3A BF 41 7F EE
|
||||
0080 | A5 8A 8B C3 C2 27 87 58 0F B3 45 68 ED EC E3 BA
|
||||
0090 | 8E A2 05 29 84 5E 51 D3 73 B9 BE 6C F7 13 53 E4
|
||||
00A0 | A0 74 CD C4 E7 CE 5D 51 0A 6B 0D 6F 0B 6F F4 83
|
||||
00B0 | 29 28 B4 2B AA E1 51 F5 E2 1C DC 77 AB BD 2E 58
|
||||
00C0 | 24 82 5E 4A 72 D6 A8 99 6A BE C7 6B 54 50 1F 62
|
||||
00D0 | 13 ED A9 AF 81 98 06 62 4F A8 00 50 59 29 B1 4D
|
||||
00E0 | AC 95 10 11 E0 71 A1 9D 07 66 29 1D 3D 3A C2 2F
|
||||
00F0 | CC 04 0E 0C AA 52 E1 B7 53 B9 AE 07 F8 67 11 22
|
||||
0100 | 24 CF F7 F9 F4 4E B1 14 8B 60 AF FB 31 97 15 5B
|
||||
0110 | E7 F4 B9 D8 DA 55 03 F7 E9 89 F7 03 CC 7F 70 67
|
||||
0120 | 70 55 F2 1F 89 AB 5C 22 63 52 F7 6F 97 61 37 B6</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 85 D5 BF 80 B1 89 FC 0C A6 C3 7E AB
|
||||
0010 | 82 79 C7 30 63 D2 48 C5 E0 9A 63 60 96 C3 54 3C
|
||||
0020 | 76 16 A3 5E 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 40 D0 9E B7 C6 A7 B0 71 7B 56 4A 74 A7 C1 1B 3E
|
||||
0040 | 34 80 9E 31 24 C0 99 89 22 93 A2 1D C0 B5 76 A4
|
||||
0050 | 17 DA F6 BE 9D B6 D8 BF FD 95 9A A4 0E 4D 60 AD
|
||||
0060 | 66 13 4A 3F AF 69 B8 15 ED 71 A8 E7 E8 4B D4 05
|
||||
0070 | FB AE 96 B6 9D E9 61 53 89 59 52 6F D7 7A A5 34
|
||||
0080 | E1 F6 B1 09 16 D6 D1 12 A3 8D 33 0C 29 37 33 3D
|
||||
0090 | 82 B5 FD F9 7B 5A 7F F3 E5 6A A5 1E 50 7A 06 14
|
||||
00A0 | FE 37 99 29 BF 90 A0 28 60 AD 82 E4 8C E4 8E 2C
|
||||
00B0 | 8A 3B 7F D8 53 B6 AB 9E BE E5 CE DD 1E FC 7B AD
|
||||
00C0 | BD 3B 05 70 4C C2 DD 7F F3 13 0B 0F A7 F4 DA 04
|
||||
00D0 | 1D D6 C7 EB C8 C2 FD FB BB F0 31 81 A3 06 96 64
|
||||
00E0 | 69 22 6F 36 1E E4 79 C5 F9 DB 80 82 A0 05 98 AB
|
||||
00F0 | 42 DB C4 53 97 AE F1 DD 7E DE DB C8 D5 B6 A6 F8
|
||||
0100 | 5F 99 5D A6 0B 55 01 4C D2 6B A9 B0 33 C4 61 18
|
||||
0110 | 60 80 97 D5 04 70 EB 69 E1 71 D2 76 42 9B B6 D5
|
||||
0120 | 3F 4A 13 FF 71 7E B9 E2 3E A8 D5 1C 76 69 83 68</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 = BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE00010024DBA6A1F7C7A543B9CDBFB7</code> <code>B1C4637D74F227528DDEF003A43CA74F</code> <code>0EB2D7C84F109B792115DFD993C2C911</code> <code>3AC7C4F46221E64080C54E1873F2AF83</code> <code>CB690B04796218C26548055B9D1AE83A</code> <code>BF417FEEA58A8BC3C22787580FB34568</code> <code>EDECE3BA8EA20529845E51D373B9BE6C</code> <code>F71353E4A074CDC4E7CE5D510A6B0D6F</code> <code>0B6FF4832928B42BAAE151F5E21CDC77</code> <code>ABBD2E5824825E4A72D6A8996ABEC76B</code> <code>54501F6213EDA9AF819806624FA80050</code> <code>5929B14DAC951011E071A19D0766291D</code> <code>3D3AC22FCC040E0CAA52E1B753B9AE07</code> <code>F867112224CFF7F9F44EB1148B60AFFB</code> <code>3197155BE7F4B9D8DA5503F7E989F703</code> <code>CC7F70677055F21F89AB5C226352F76F</code><br> <code>976137B6</code></td>
|
||||
<td><code>FE00010040D09EB7C6A7B0717B564A74</code> <code>A7C11B3E34809E3124C099892293A21D</code> <code>C0B576A417DAF6BE9DB6D8BFFD959AA4</code> <code>0E4D60AD66134A3FAF69B815ED71A8E7</code> <code>E84BD405FBAE96B69DE961538959526F</code> <code>D77AA534E1F6B10916D6D112A38D330C</code> <code>2937333D82B5FDF97B5A7FF3E56AA51E</code> <code>507A0614FE379929BF90A02860AD82E4</code> <code>8CE48E2C8A3B7FD853B6AB9EBEE5CEDD</code> <code>1EFC7BADBD3B05704CC2DD7FF3130B0F</code> <code>A7F4DA041DD6C7EBC8C2FDFBBBF03181</code> <code>A306966469226F361EE479C5F9DB8082</code> <code>A00598AB42DBC45397AEF1DD7EDEDBC8</code> <code>D5B6A6F85F995DA60B55014CD26BA9B0</code> <code>33C46118608097D50470EB69E171D276</code> <code>429BB6D53F4A13FF717EB9E23EA8D51C</code><br> <code>76698368</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 = BA0D89B588178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC
|
|||
<!-- 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 = 54B6436688178DBF3491B5EF336CA97AD01559A5CE81B55B3C2DD3D06D0BADC8A65C3CC60000000000000000FE00010024DBA6A1F7C7A543B9CDBFB7B1C4637D74F227528DDEF003A43CA74F0EB2D7C84F109B792115DFD993C2C9113AC7C4F46221E64080C54E1873F2AF83CB690B04796218C26548055B9D1AE83ABF417FEEA58A8BC3C22787580FB34568EDECE3BA8EA20529845E51D373B9BE6CF71353E4A074CDC4E7CE5D510A6B0D6F0B6FF4832928B42BAAE151F5E21CDC77ABBD2E5824825E4A72D6A8996ABEC76B54501F6213EDA9AF819806624FA800505929B14DAC951011E071A19D0766291D3D3AC22FCC040E0CAA52E1B753B9AE07F867112224CFF7F9F44EB1148B60AFFB3197155BE7F4B9D8DA5503F7E989F703CC7F70677055F21F89AB5C226352F76F976137B6
|
||||
padding = 9C0C4B827AD131FCCFD78CE6
|
||||
tmp_aes_key = C2907E6720FE2B8205E13C16DF12389B14205FB7A299054E3571FE78F50B0789
|
||||
tmp_aes_iv = 741D3A5C7F5DFE38E585586FE2CDEAD6EBF8E319A0EEAF466F8D756B0A93AFA7</code></pre>
|
||||
<pre><code>data = 54B6436685D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E0000000000000000FE00010040D09EB7C6A7B0717B564A74A7C11B3E34809E3124C099892293A21DC0B576A417DAF6BE9DB6D8BFFD959AA40E4D60AD66134A3FAF69B815ED71A8E7E84BD405FBAE96B69DE961538959526FD77AA534E1F6B10916D6D112A38D330C2937333D82B5FDF97B5A7FF3E56AA51E507A0614FE379929BF90A02860AD82E48CE48E2C8A3B7FD853B6AB9EBEE5CEDD1EFC7BADBD3B05704CC2DD7FF3130B0FA7F4DA041DD6C7EBC8C2FDFBBBF03181A306966469226F361EE479C5F9DB8082A00598AB42DBC45397AEF1DD7EDEDBC8D5B6A6F85F995DA60B55014CD26BA9B033C46118608097D50470EB69E171D276429BB6D53F4A13FF717EB9E23EA8D51C76698368
|
||||
padding = 270D8CE8A3AB22A8D43AE249
|
||||
tmp_aes_key = B64E760C2EA83BA9EDA2DA7E5826A518B6D82CE469DE416A140B25AACB7AA41B
|
||||
tmp_aes_iv = 279F8786E2A347AF1284D523F2EF9589DE890EEE25235638E1CA610A13BC04D0</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 = C0883D31A85D90E91C3E16094C7D2D269EF5EEADACDA3C2AC0157DD8FCF8C276F82D3A1A507547B7AAF038179B3E421662E8A7BBA0EE0722C819B8FB616D836E295CE6CDE6062536995C817D1E7B4EC90823F094CF393A6E5EA2E9DE23FC8BB1A5787F8219B0FBEE904AE5531FF031EB6D21C67FF5882E41F58DB75663D5D489D948D2A182635966EC7C468BA8F9975C6FB1612067D82EC60F92767542974418683A226A70D6494AAC6A21ADA4DDBF10E200E6ABE3FE13C08713EA9540BA41A0337CC31DFB0D866BACB1AD146F5FC78E23091893AD3DE5705800864F95E555BECA0D45A0A5AD07DE51FFF059727FFC993BA0EF501C9077FB633E83CA5DEBC7448E3BE504107020B122656FE42ABB26455AFE38930AD091DA0F6037B599034A1CC6ADE286C2890987012F303C21DB4C741B732F3230E24BED549831964639FEB095411176850077F297C52EB65CD5087B</code></pre>
|
||||
<pre><code>encrypted_data = 1DF0B6D5DD8EFD79F454B18724ABFB5A3049139671D8846A810CDF1017DF9D019DB7B20A81D5EF4BFCCE20F97E938B5AEAB818056130F15EE5D738DDFB840781F7894074CB2F5B58700D0D0AD71B5BD9969C67CE8D4EF9C096E8CD0266C27CEAE681AB2F65DFF2AF2981C1E12111EA17A2265444A6B741826E4BE2A0B49388D82E4C1A5ACCC0D05404835EA72328EBF835752A577408D21382999D1FD09998A20F9784719EDF55729EC4F2376A013A13BA38E823A239378117E7E2525574F87891BA4DD7B33465CE4EFCCFF3643365E0FA353AFFC3F50F2E00F947AF5340B1EC37A2C5310CEB44C0DB5572CEF26BD3F0C297FCDB37495F0D7C27382AA941856D32EFC7BE7F1E833740761B0382BAE8649E054A0068877D349C4C02F20458D7E3C2D5E887855684C85A8430F848090F1E0D44FC58E594A1406648063903CDB63551A7F554C95B9B249F837E1D9EDB063E</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 70 84 07 00 88 23 C5 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 88 17 8D BF 34 91 B5 EF
|
||||
0020 | 33 6C A9 7A D0 15 59 A5 CE 81 B5 5B 3C 2D D3 D0
|
||||
0030 | 6D 0B AD C8 A6 5C 3C C6 FE 50 01 00 C0 88 3D 31
|
||||
0040 | A8 5D 90 E9 1C 3E 16 09 4C 7D 2D 26 9E F5 EE AD
|
||||
0050 | AC DA 3C 2A C0 15 7D D8 FC F8 C2 76 F8 2D 3A 1A
|
||||
0060 | 50 75 47 B7 AA F0 38 17 9B 3E 42 16 62 E8 A7 BB
|
||||
0070 | A0 EE 07 22 C8 19 B8 FB 61 6D 83 6E 29 5C E6 CD
|
||||
0080 | E6 06 25 36 99 5C 81 7D 1E 7B 4E C9 08 23 F0 94
|
||||
0090 | CF 39 3A 6E 5E A2 E9 DE 23 FC 8B B1 A5 78 7F 82
|
||||
00A0 | 19 B0 FB EE 90 4A E5 53 1F F0 31 EB 6D 21 C6 7F
|
||||
00B0 | F5 88 2E 41 F5 8D B7 56 63 D5 D4 89 D9 48 D2 A1
|
||||
00C0 | 82 63 59 66 EC 7C 46 8B A8 F9 97 5C 6F B1 61 20
|
||||
00D0 | 67 D8 2E C6 0F 92 76 75 42 97 44 18 68 3A 22 6A
|
||||
00E0 | 70 D6 49 4A AC 6A 21 AD A4 DD BF 10 E2 00 E6 AB
|
||||
00F0 | E3 FE 13 C0 87 13 EA 95 40 BA 41 A0 33 7C C3 1D
|
||||
0100 | FB 0D 86 6B AC B1 AD 14 6F 5F C7 8E 23 09 18 93
|
||||
0110 | AD 3D E5 70 58 00 86 4F 95 E5 55 BE CA 0D 45 A0
|
||||
0120 | A5 AD 07 DE 51 FF F0 59 72 7F FC 99 3B A0 EF 50
|
||||
0130 | 1C 90 77 FB 63 3E 83 CA 5D EB C7 44 8E 3B E5 04
|
||||
0140 | 10 70 20 B1 22 65 6F E4 2A BB 26 45 5A FE 38 93
|
||||
0150 | 0A D0 91 DA 0F 60 37 B5 99 03 4A 1C C6 AD E2 86
|
||||
0160 | C2 89 09 87 01 2F 30 3C 21 DB 4C 74 1B 73 2F 32
|
||||
0170 | 30 E2 4B ED 54 98 31 96 46 39 FE B0 95 41 11 76
|
||||
0180 | 85 00 77 F2 97 C5 2E B6 5C D5 08 7B</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 5C CE 05 00 56 27 C5 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 85 D5 BF 80 B1 89 FC 0C
|
||||
0020 | A6 C3 7E AB 82 79 C7 30 63 D2 48 C5 E0 9A 63 60
|
||||
0030 | 96 C3 54 3C 76 16 A3 5E FE 50 01 00 1D F0 B6 D5
|
||||
0040 | DD 8E FD 79 F4 54 B1 87 24 AB FB 5A 30 49 13 96
|
||||
0050 | 71 D8 84 6A 81 0C DF 10 17 DF 9D 01 9D B7 B2 0A
|
||||
0060 | 81 D5 EF 4B FC CE 20 F9 7E 93 8B 5A EA B8 18 05
|
||||
0070 | 61 30 F1 5E E5 D7 38 DD FB 84 07 81 F7 89 40 74
|
||||
0080 | CB 2F 5B 58 70 0D 0D 0A D7 1B 5B D9 96 9C 67 CE
|
||||
0090 | 8D 4E F9 C0 96 E8 CD 02 66 C2 7C EA E6 81 AB 2F
|
||||
00A0 | 65 DF F2 AF 29 81 C1 E1 21 11 EA 17 A2 26 54 44
|
||||
00B0 | A6 B7 41 82 6E 4B E2 A0 B4 93 88 D8 2E 4C 1A 5A
|
||||
00C0 | CC C0 D0 54 04 83 5E A7 23 28 EB F8 35 75 2A 57
|
||||
00D0 | 74 08 D2 13 82 99 9D 1F D0 99 98 A2 0F 97 84 71
|
||||
00E0 | 9E DF 55 72 9E C4 F2 37 6A 01 3A 13 BA 38 E8 23
|
||||
00F0 | A2 39 37 81 17 E7 E2 52 55 74 F8 78 91 BA 4D D7
|
||||
0100 | B3 34 65 CE 4E FC CF F3 64 33 65 E0 FA 35 3A FF
|
||||
0110 | C3 F5 0F 2E 00 F9 47 AF 53 40 B1 EC 37 A2 C5 31
|
||||
0120 | 0C EB 44 C0 DB 55 72 CE F2 6B D3 F0 C2 97 FC DB
|
||||
0130 | 37 49 5F 0D 7C 27 38 2A A9 41 85 6D 32 EF C7 BE
|
||||
0140 | 7F 1E 83 37 40 76 1B 03 82 BA E8 64 9E 05 4A 00
|
||||
0150 | 68 87 7D 34 9C 4C 02 F2 04 58 D7 E3 C2 D5 E8 87
|
||||
0160 | 85 56 84 C8 5A 84 30 F8 48 09 0F 1E 0D 44 FC 58
|
||||
0170 | E5 94 A1 40 66 48 06 39 03 CD B6 35 51 A7 F5 54
|
||||
0180 | C9 5B 9B 24 9F 83 7E 1D 9E DB 06 3E</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>708407008823C565</code></td>
|
||||
<td><code>5CCE05005627C565</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>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100C0883D31A85D90E91C3E1609</code> <code>4C7D2D269EF5EEADACDA3C2AC0157DD8</code> <code>FCF8C276F82D3A1A507547B7AAF03817</code> <code>9B3E421662E8A7BBA0EE0722C819B8FB</code> <code>616D836E295CE6CDE6062536995C817D</code> <code>1E7B4EC90823F094CF393A6E5EA2E9DE</code> <code>23FC8BB1A5787F8219B0FBEE904AE553</code> <code>1FF031EB6D21C67FF5882E41F58DB756</code> <code>63D5D489D948D2A182635966EC7C468B</code> <code>A8F9975C6FB1612067D82EC60F927675</code> <code>42974418683A226A70D6494AAC6A21AD</code> <code>A4DDBF10E200E6ABE3FE13C08713EA95</code> <code>40BA41A0337CC31DFB0D866BACB1AD14</code> <code>6F5FC78E23091893AD3DE5705800864F</code> <code>95E555BECA0D45A0A5AD07DE51FFF059</code> <code>727FFC993BA0EF501C9077FB633E83CA</code> <code>5DEBC7448E3BE504107020B122656FE4</code> <code>2ABB26455AFE38930AD091DA0F6037B5</code> <code>99034A1CC6ADE286C2890987012F303C</code> <code>21DB4C741B732F3230E24BED54983196</code> <code>4639FEB095411176850077F297C52EB6</code><br> <code>5CD5087B</code></td>
|
||||
<td><code>FE5001001DF0B6D5DD8EFD79F454B187</code> <code>24ABFB5A3049139671D8846A810CDF10</code> <code>17DF9D019DB7B20A81D5EF4BFCCE20F9</code> <code>7E938B5AEAB818056130F15EE5D738DD</code> <code>FB840781F7894074CB2F5B58700D0D0A</code> <code>D71B5BD9969C67CE8D4EF9C096E8CD02</code> <code>66C27CEAE681AB2F65DFF2AF2981C1E1</code> <code>2111EA17A2265444A6B741826E4BE2A0</code> <code>B49388D82E4C1A5ACCC0D05404835EA7</code> <code>2328EBF835752A577408D21382999D1F</code> <code>D09998A20F9784719EDF55729EC4F237</code> <code>6A013A13BA38E823A239378117E7E252</code> <code>5574F87891BA4DD7B33465CE4EFCCFF3</code> <code>643365E0FA353AFFC3F50F2E00F947AF</code> <code>5340B1EC37A2C5310CEB44C0DB5572CE</code> <code>F26BD3F0C297FCDB37495F0D7C27382A</code> <code>A941856D32EFC7BE7F1E833740761B03</code> <code>82BAE8649E054A0068877D349C4C02F2</code> <code>0458D7E3C2D5E887855684C85A8430F8</code> <code>48090F1E0D44FC58E594A14066480639</code> <code>03CDB63551A7F554C95B9B249F837E1D</code><br> <code>9EDB063E</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 = C26C68C4DBC6B6D461F6E47FAE6E1842224FF9394593358A9C7BA38A3E195FD8C30A1DE7C722B98B6BE6C80777C5C191D527E1479D4677FB596001E24C87DD7FC61193AB75B7573252084338DBB7480FE06790E1ADE2286097DD34776A321729AE7861991C8E97BBCD6FC92F326D3FB0C3DC02F72D20769859E03FC91260C2949A16102FADB1D91654E9D90EB1293BC0552A6C68680C27A879AE59651E2F89A1C6F77527A7E0E69A763856C662D262E9DA7CD40D88CA088B2E0C64BCE219C9D5A04118DA1BD8FEAC29F57863AF9DE1F12C15BD7CD0B2196A0FAB89C3E3F6AFD438464123DAB53330CF03684F9A082B3DF5C8A79D86700449959F3A4C0D3999D9</code></pre>
|
||||
<pre><code>auth_key = 6C63D6ACD86A700AD3C5F6598145E3955FC4E97BC706864E9AC845A67D81103671042ABB23DA9F375F1C4EEE3A924C22EBF4E08A5408036314274BEE204F5D31342F20C1FFF66A041ACA36BDFBCAEBBD7B49D7459D50D02D4142FF7E741ED121B63DF86C38C8F7D0CAECA186C4A5E87A60F61A28B077F1E6888E511AE5E718A1F981469273D84DD394FCFA8A431A5B87890E5684F862A158BCB9BCD1C8EC13A77969CC8E7F7A2B0EDA41890F3AC91FCF2BD7E88A1703F35A295563D9AE3D6B7B741B1D0638DB84C88B6ACB0B5908518868CE83018A693B6306CC1BF61E5D2E0BB2815AD733745624EC1F935E09A160542A5052C0AE10FD98477C82A8EEFA41C8</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 1C 00 7F 89 23 C5 65
|
||||
0010 | B0 00 00 00 34 F7 CB 3B 88 17 8D BF 34 91 B5 EF
|
||||
0020 | 33 6C A9 7A D0 15 59 A5 CE 81 B5 5B 3C 2D D3 D0
|
||||
0030 | 6D 0B AD C8 A6 5C 3C C6 7E B8 AA 90 63 95 AF FD
|
||||
0040 | 89 7D 77 46 1A 67 77 5C</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B4 FB 70 57 27 C5 65
|
||||
0010 | 6C 00 00 00 34 F7 CB 3B 85 D5 BF 80 B1 89 FC 0C
|
||||
0020 | A6 C3 7E AB 82 79 C7 30 63 D2 48 C5 E0 9A 63 60
|
||||
0030 | 96 C3 54 3C 76 16 A3 5E 86 4C A9 37 8A 43 7E 2D
|
||||
0040 | F7 B1 F3 07 C8 48 9B 29</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>011C007F8923C565</code></td>
|
||||
<td><code>01B4FB705727C565</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>B0000000</code> (176 in decimal)</td>
|
||||
<td><code>6C000000</code> (108 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>88178DBF3491B5EF336CA97AD01559A5</code></td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>CE81B55B3C2DD3D06D0BADC8A65C3CC6</code></td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>7EB8AA906395AFFD897D77461A67775C</code></td>
|
||||
<td><code>864CA9378A437E2DF7B1F307C8489B29</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>
|
||||
|
|
Loading…
Add table
Reference in a new issue