mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-02-16 11:11:57 +01:00
Update content of files
This commit is contained in:
parent
1034a0decc
commit
5e9b76c6d7
2 changed files with 208 additions and 208 deletions
|
@ -275,8 +275,8 @@
|
|||
<li>Added <a href="/constructor/storyView">storyView</a> - </li>
|
||||
<li>Added <a href="/constructor/stories.storyViewsList">stories.storyViewsList</a> - </li>
|
||||
<li>Added <a href="/constructor/stories.storyViews">stories.storyViews</a> - </li>
|
||||
<li>Added <a href="/constructor/inputReplyToMessage">inputReplyToMessage</a> - </li>
|
||||
<li>Added <a href="/constructor/inputReplyToStory">inputReplyToStory</a> - </li>
|
||||
<li>Added <a href="/constructor/inputReplyToMessage">inputReplyToMessage</a> - Reply to a message.</li>
|
||||
<li>Added <a href="/constructor/inputReplyToStory">inputReplyToStory</a> - Reply to a story.</li>
|
||||
<li>Added <a href="/constructor/messageReplyStoryHeader">messageReplyStoryHeader</a> - </li>
|
||||
<li>Added <a href="/constructor/updateStoryID">updateStoryID</a> - </li>
|
||||
<li>Added <a href="/constructor/exportedStoryLink">exportedStoryLink</a> - </li>
|
||||
|
|
|
@ -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 B0 DC 01 00 E4 97 3A 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 3F E0 76 CF 55 FF 9F 84
|
||||
0020 | 87 51 A6 62 1D FA F4 B6</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 7C 46 04 00 01 BB 3A 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 43 FE 8B 3B A6 4A AA 94
|
||||
0020 | F0 20 39 D5 5E 62 38 8C</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>B0DC0100E4973A65</code></td>
|
||||
<td><code>7C46040001BB3A65</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>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</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 18 07 61 E0 97 3A 65
|
||||
0010 | 54 00 00 00 63 24 16 05 3F E0 76 CF 55 FF 9F 84
|
||||
0020 | 87 51 A6 62 1D FA F4 B6 72 25 BE E1 1E B0 B4 BF
|
||||
0030 | 6F D2 72 17 47 13 67 68 08 2D 76 90 4E E2 A0 A8
|
||||
0040 | 2B 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 D8 6F 4A FD BA 3A 65
|
||||
0010 | A8 00 00 00 63 24 16 05 43 FE 8B 3B A6 4A AA 94
|
||||
0020 | F0 20 39 D5 5E 62 38 8C AA 91 9A 98 37 CA 9A 0B
|
||||
0030 | 67 B5 1B BA C6 7D FE 85 08 11 DC E4 D6 EE 81 AE
|
||||
0040 | 6B 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>01180761E0973A65</code></td>
|
||||
<td><code>01D86F4AFDBA3A65</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>54000000</code> (84 in decimal)</td>
|
||||
<td><code>A8000000</code> (168 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>082D76904EE2A0A82B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3275964447442642987</td>
|
||||
<td><code>0811DCE4D6EE81AE6B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1287155205296729707</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--q" id="3-client-decomposes-pq-into-prime-factors-such-that-p--q" name="3-client-decomposes-pq-into-prime-factors-such-that-p--q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p < q.</h5>
|
||||
<!-- start pq -->
|
||||
<pre><code>pq = 3275964447442642987</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>3275964447442642987 = 1736345431 * 1886700877</code></p>
|
||||
<pre><code>p = 1736345431
|
||||
q = 1886700877</code></pre>
|
||||
<pre><code>pq = 1287155205296729707</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1287155205296729707 = 1049313127 * 1226664541</code></p>
|
||||
<pre><code>p = 1049313127
|
||||
q = 1226664541</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 2D 76 90 4E E2 A0 A8 2B 00 00 00
|
||||
0010 | 04 67 7E 87 57 00 00 00 04 70 74 C5 4D 00 00 00
|
||||
0020 | 3F E0 76 CF 55 FF 9F 84 87 51 A6 62 1D FA F4 B6
|
||||
0030 | 72 25 BE E1 1E B0 B4 BF 6F D2 72 17 47 13 67 68
|
||||
0040 | FB 51 96 8E FC 10 36 E0 DC DF 4F 69 7E 34 74 C2
|
||||
0050 | D4 D5 65 5A 55 7F A3 AB AE 47 80 60 A6 37 12 8F
|
||||
<pre><code>0000 | 95 5F F5 A9 08 11 DC E4 D6 EE 81 AE 6B 00 00 00
|
||||
0010 | 04 3E 8B 3F 67 00 00 00 04 49 1D 6A 5D 00 00 00
|
||||
0020 | 43 FE 8B 3B A6 4A AA 94 F0 20 39 D5 5E 62 38 8C
|
||||
0030 | AA 91 9A 98 37 CA 9A 0B 67 B5 1B BA C6 7D FE 85
|
||||
0040 | 9A D1 C2 F1 29 A2 EE 2B B3 54 7C 10 FB 86 64 7A
|
||||
0050 | C0 29 26 95 C7 9C 8D 10 92 81 27 8E E8 C0 D9 F9
|
||||
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 = 1886700877</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>082D76904EE2A0A82B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 3275964447442642987</td>
|
||||
<td><code>0811DCE4D6EE81AE6B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1287155205296729707</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>04677E8757000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1736345431</td>
|
||||
<td><code>043E8B3F67000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1049313127</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>047074C54D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1886700877</td>
|
||||
<td><code>04491D6A5D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1226664541</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>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>FB51968EFC1036E0DCDF4F697E3474C2</code> <code>D4D5655A557FA3ABAE478060A637128F</code></td>
|
||||
<td><code>9AD1C2F129A2EE2BB3547C10FB86647A</code> <code>C0292695C79C8D109281278EE8C0D9F9</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1886700877</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 = 955FF5A9082D76904EE2A0A82B00000004677E8757000000047074C54D0000003FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD2721747136768FB51968EFC1036E0DCDF4F697E3474C2D4D5655A557FA3ABAE478060A637128F02000000
|
||||
random_padding_bytes = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07C1AC0E429EFA3BDDD9278DA1B28A7997723B06E989D4954512CC71D95114522DED3697BEA97B070BEF64A8D3ACAA383C076FB94C603861D45972A5B722A41A1</code></pre>
|
||||
<pre><code>data = 955FF5A90811DCE4D6EE81AE6B000000043E8B3F6700000004491D6A5D00000043FE8B3BA64AAA94F02039D55E62388CAA919A9837CA9A0B67B51BBAC67DFE859AD1C2F129A2EE2BB3547C10FB86647AC0292695C79C8D109281278EE8C0D9F902000000
|
||||
random_padding_bytes = 3E4818740CBFDBCD9B7598BA1E81B1906EA0BF17B3A0C9FDAC7702439992121F708E684303ABF945BDD9F09D6498336233ADBD5E34E39DFF3E99C4760C43842B4AE628B719C2945E52E235C79AB24164FE7DEC78056FCB932B6A1019</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 = 6924E88772F171A95F8A92F5F1594306FE429FA9BE439F4F0CB8004708053F30BC78A0DB5FFB9E37DA3CC60C6BE5D932D2B0953BBA633B2491F18D9560791C61D9F6927F0F4DDB14166889648A2706E6E3A79D7131B84DF9661B923347D6770B77C788FC28CB5C015D154BAD1B5D9872D4A09794660802A6C1743AE388F0C434E929684CBFF5A87CB93E568F806D38251733EDF30DD4160B89C6E6D5D4AB8DB5B6E178E6E175CDA2C594B632FBB97F2D91A32FEEA244C49A7D83D05EAB657017FFA33447F08326504D3406304B78552416377F9ED1F69C4A251416E530FBD5D702A6975C3AEB67EBA4521AFF1C8C246BB0B261932EDBA43F2BF8375244A26D06</code></pre>
|
||||
<pre><code>encrypted_data = DF2EDED6F60F78A5DE43D246475387E9C6BF476D11D786DC8FD2D1816B646EF896B80B18C0FBADF4822EDDA30378EA8611D216E9A82EF862A3E8CA746281065CDE8775A515FF9AB8C3473BFED8993DA00E59A47FECBFB3AAAFE5ED4FBAAB1E6FBC7C1596B7CA2097061D9CE536F5C48BBBC7917D6E0DC3AE91D3A18A9F33A395D8D952308B5CEC1FB01A85539FB3A73DE21234CE05A7BD49DAC9B65DBF0FD1B10979469ECF1374D4DB2034F71D9C907086A1100FBDF1274A524584FDF7A895920FA6425C9CC2ABDC471A1C28D8A0098306879FA4E7AE6FA197541B6AE70BF1641A2EC9A76F835565F3F2C498824024696E6E41B728D9804127F34EFC2F0E757E</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 60 31 0B 00 E4 97 3A 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 3F E0 76 CF 55 FF 9F 84
|
||||
0020 | 87 51 A6 62 1D FA F4 B6 72 25 BE E1 1E B0 B4 BF
|
||||
0030 | 6F D2 72 17 47 13 67 68 04 67 7E 87 57 00 00 00
|
||||
0040 | 04 70 74 C5 4D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 69 24 E8 87 72 F1 71 A9 5F 8A 92 F5
|
||||
0060 | F1 59 43 06 FE 42 9F A9 BE 43 9F 4F 0C B8 00 47
|
||||
0070 | 08 05 3F 30 BC 78 A0 DB 5F FB 9E 37 DA 3C C6 0C
|
||||
0080 | 6B E5 D9 32 D2 B0 95 3B BA 63 3B 24 91 F1 8D 95
|
||||
0090 | 60 79 1C 61 D9 F6 92 7F 0F 4D DB 14 16 68 89 64
|
||||
00A0 | 8A 27 06 E6 E3 A7 9D 71 31 B8 4D F9 66 1B 92 33
|
||||
00B0 | 47 D6 77 0B 77 C7 88 FC 28 CB 5C 01 5D 15 4B AD
|
||||
00C0 | 1B 5D 98 72 D4 A0 97 94 66 08 02 A6 C1 74 3A E3
|
||||
00D0 | 88 F0 C4 34 E9 29 68 4C BF F5 A8 7C B9 3E 56 8F
|
||||
00E0 | 80 6D 38 25 17 33 ED F3 0D D4 16 0B 89 C6 E6 D5
|
||||
00F0 | D4 AB 8D B5 B6 E1 78 E6 E1 75 CD A2 C5 94 B6 32
|
||||
0100 | FB B9 7F 2D 91 A3 2F EE A2 44 C4 9A 7D 83 D0 5E
|
||||
0110 | AB 65 70 17 FF A3 34 47 F0 83 26 50 4D 34 06 30
|
||||
0120 | 4B 78 55 24 16 37 7F 9E D1 F6 9C 4A 25 14 16 E5
|
||||
0130 | 30 FB D5 D7 02 A6 97 5C 3A EB 67 EB A4 52 1A FF
|
||||
0140 | 1C 8C 24 6B B0 B2 61 93 2E DB A4 3F 2B F8 37 52
|
||||
0150 | 44 A2 6D 06</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 2C E7 06 00 01 BB 3A 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 43 FE 8B 3B A6 4A AA 94
|
||||
0020 | F0 20 39 D5 5E 62 38 8C AA 91 9A 98 37 CA 9A 0B
|
||||
0030 | 67 B5 1B BA C6 7D FE 85 04 3E 8B 3F 67 00 00 00
|
||||
0040 | 04 49 1D 6A 5D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 DF 2E DE D6 F6 0F 78 A5 DE 43 D2 46
|
||||
0060 | 47 53 87 E9 C6 BF 47 6D 11 D7 86 DC 8F D2 D1 81
|
||||
0070 | 6B 64 6E F8 96 B8 0B 18 C0 FB AD F4 82 2E DD A3
|
||||
0080 | 03 78 EA 86 11 D2 16 E9 A8 2E F8 62 A3 E8 CA 74
|
||||
0090 | 62 81 06 5C DE 87 75 A5 15 FF 9A B8 C3 47 3B FE
|
||||
00A0 | D8 99 3D A0 0E 59 A4 7F EC BF B3 AA AF E5 ED 4F
|
||||
00B0 | BA AB 1E 6F BC 7C 15 96 B7 CA 20 97 06 1D 9C E5
|
||||
00C0 | 36 F5 C4 8B BB C7 91 7D 6E 0D C3 AE 91 D3 A1 8A
|
||||
00D0 | 9F 33 A3 95 D8 D9 52 30 8B 5C EC 1F B0 1A 85 53
|
||||
00E0 | 9F B3 A7 3D E2 12 34 CE 05 A7 BD 49 DA C9 B6 5D
|
||||
00F0 | BF 0F D1 B1 09 79 46 9E CF 13 74 D4 DB 20 34 F7
|
||||
0100 | 1D 9C 90 70 86 A1 10 0F BD F1 27 4A 52 45 84 FD
|
||||
0110 | F7 A8 95 92 0F A6 42 5C 9C C2 AB DC 47 1A 1C 28
|
||||
0120 | D8 A0 09 83 06 87 9F A4 E7 AE 6F A1 97 54 1B 6A
|
||||
0130 | E7 0B F1 64 1A 2E C9 A7 6F 83 55 65 F3 F2 C4 98
|
||||
0140 | 82 40 24 69 6E 6E 41 B7 28 D9 80 41 27 F3 4E FC
|
||||
0150 | 2F 0E 75 7E</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 = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>60310B00E4973A65</code></td>
|
||||
<td><code>2CE7060001BB3A65</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 = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>04677E8757000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1736345431</td>
|
||||
<td><code>043E8B3F67000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1049313127</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>047074C54D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1886700877</td>
|
||||
<td><code>04491D6A5D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1226664541</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 = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE0001006924E88772F171A95F8A92F5</code> <code>F1594306FE429FA9BE439F4F0CB80047</code> <code>08053F30BC78A0DB5FFB9E37DA3CC60C</code> <code>6BE5D932D2B0953BBA633B2491F18D95</code> <code>60791C61D9F6927F0F4DDB1416688964</code> <code>8A2706E6E3A79D7131B84DF9661B9233</code> <code>47D6770B77C788FC28CB5C015D154BAD</code> <code>1B5D9872D4A09794660802A6C1743AE3</code> <code>88F0C434E929684CBFF5A87CB93E568F</code> <code>806D38251733EDF30DD4160B89C6E6D5</code> <code>D4AB8DB5B6E178E6E175CDA2C594B632</code> <code>FBB97F2D91A32FEEA244C49A7D83D05E</code> <code>AB657017FFA33447F08326504D340630</code> <code>4B78552416377F9ED1F69C4A251416E5</code> <code>30FBD5D702A6975C3AEB67EBA4521AFF</code> <code>1C8C246BB0B261932EDBA43F2BF83752</code><br> <code>44A26D06</code></td>
|
||||
<td><code>FE000100DF2EDED6F60F78A5DE43D246</code> <code>475387E9C6BF476D11D786DC8FD2D181</code> <code>6B646EF896B80B18C0FBADF4822EDDA3</code> <code>0378EA8611D216E9A82EF862A3E8CA74</code> <code>6281065CDE8775A515FF9AB8C3473BFE</code> <code>D8993DA00E59A47FECBFB3AAAFE5ED4F</code> <code>BAAB1E6FBC7C1596B7CA2097061D9CE5</code> <code>36F5C48BBBC7917D6E0DC3AE91D3A18A</code> <code>9F33A395D8D952308B5CEC1FB01A8553</code> <code>9FB3A73DE21234CE05A7BD49DAC9B65D</code> <code>BF0FD1B10979469ECF1374D4DB2034F7</code> <code>1D9C907086A1100FBDF1274A524584FD</code> <code>F7A895920FA6425C9CC2ABDC471A1C28</code> <code>D8A0098306879FA4E7AE6FA197541B6A</code> <code>E70BF1641A2EC9A76F835565F3F2C498</code> <code>824024696E6E41B728D9804127F34EFC</code><br> <code>2F0E757E</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07
|
|||
<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 1C E7 FE E0 97 3A 65
|
||||
0010 | E8 02 00 00 5C 07 E8 D0 3F E0 76 CF 55 FF 9F 84
|
||||
0020 | 87 51 A6 62 1D FA F4 B6 72 25 BE E1 1E B0 B4 BF
|
||||
0030 | 6F D2 72 17 47 13 67 68 FE 50 02 00 0A 66 A3 22
|
||||
0040 | EC E3 E3 1F F9 21 41 41 F0 BE C8 FE 93 F7 2F 3D
|
||||
0050 | A1 D8 16 F7 12 41 32 1C A7 4B 60 68 7B CA F7 B5
|
||||
0060 | 79 D9 C2 DA 54 70 B5 49 16 00 F5 01 06 86 71 97
|
||||
0070 | 8C 8E 34 5B 2F 56 34 43 97 2F A1 9D 8B 1A EF 59
|
||||
0080 | 6A 7C C2 B3 77 73 4E 92 A3 78 9F 41 32 6F 8F 8D
|
||||
0090 | 22 F2 15 74 77 00 05 65 06 15 81 9A E3 19 3F 65
|
||||
00A0 | 81 8B 06 D5 73 D4 88 94 8B 1B C3 2E F6 DF 70 58
|
||||
00B0 | 8F 01 3F 11 4E 10 65 B2 33 6D 05 55 4C 76 5E 8A
|
||||
00C0 | 9A A4 38 90 F8 F4 DE 1C AE D6 DD 44 EF C0 A5 6C
|
||||
00D0 | 7B A0 54 B3 05 F9 A6 DE A4 27 68 E7 72 57 CC FD
|
||||
00E0 | 62 3E 1D 66 48 B7 0B 30 2D 63 5C B9 EB D0 E1 21
|
||||
00F0 | 28 99 88 63 D0 67 2E B2 FC B1 C1 36 D5 80 A9 2C
|
||||
0100 | 8B FD 8D 37 FA 79 10 43 C6 19 BB A9 FF AD A7 13
|
||||
0110 | 7B EC 21 75 75 8C 51 3A 33 39 01 A7 7B 69 50 32
|
||||
0120 | FC 72 A7 F1 92 14 C2 3C 18 0D B6 51 C4 AD BB 19
|
||||
0130 | C5 6E 32 13 C0 04 78 10 62 4A B0 8A 4B 13 26 E9
|
||||
0140 | EC 5C 3C 7C 41 59 50 15 00 BC 49 D0 CF 81 15 E2
|
||||
0150 | FE 54 FD 0F AD 25 A0 E0 B8 99 BC F8 EE 7A FB E0
|
||||
0160 | 41 D2 8C 21 69 9D 62 71 31 99 B6 78 7B 74 DC 6B
|
||||
0170 | 7C A8 5E FB 7C F2 92 4F 9F 4D 0B 4D 6A EE 49 8D
|
||||
0180 | 68 EC 42 77 28 17 5F D1 17 A5 86 F9 4B A2 53 7F
|
||||
0190 | A5 73 EF 4D E8 31 D7 77 BC 59 C9 20 F0 31 1C EF
|
||||
01A0 | 30 13 70 DD C6 4C 72 10 65 A9 64 CA E9 99 9C D9
|
||||
01B0 | CE CA C3 DC A1 AE 74 81 80 AE F6 F9 61 84 AC 92
|
||||
01C0 | FE 07 3C 84 97 DB 88 D8 10 BC 5F FF 14 5B 8B 38
|
||||
01D0 | CB 1B E0 60 FF 66 AD AB 00 2C D4 73 49 ED EA CA
|
||||
01E0 | 3A 27 D2 62 EC E6 40 40 EB 8E 16 82 7B FB FF 76
|
||||
01F0 | F3 13 4B 3A 87 E2 D5 03 14 D1 7D AB B5 89 BE 54
|
||||
0200 | 2C 71 7F BA 17 34 CF 11 5A 32 09 98 65 7B D5 1E
|
||||
0210 | 33 B9 A9 29 58 A9 F3 7C 79 36 62 13 DF B5 C9 23
|
||||
0220 | 3D 8C 49 25 C7 66 EB 2F FB 70 95 39 2F B9 30 D6
|
||||
0230 | F1 B9 97 38 7C 75 96 5A 24 F4 D6 C8 F9 0C 2D 85
|
||||
0240 | 4F C5 26 2A 63 68 23 69 75 B9 F8 A8 88 06 5F 47
|
||||
0250 | 7C ED B9 B3 37 C2 7B DE 8E 23 1E FB 09 C4 7B 2F
|
||||
0260 | D5 27 4B 08 EF 43 8E BA 45 5A 63 81 6F 51 7B FA
|
||||
0270 | 38 84 E8 A2 C1 3B 95 F1 3D B9 79 29 1F 1F DC 8F
|
||||
0280 | 50 A5 15 0F 4E 97 AC 24 71 81 3C 7C</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 50 C8 EE FD BA 3A 65
|
||||
0010 | A0 02 00 00 5C 07 E8 D0 43 FE 8B 3B A6 4A AA 94
|
||||
0020 | F0 20 39 D5 5E 62 38 8C AA 91 9A 98 37 CA 9A 0B
|
||||
0030 | 67 B5 1B BA C6 7D FE 85 FE 50 02 00 16 46 9C B8
|
||||
0040 | 9D 84 3B 92 A5 50 B2 20 08 6A 3F 84 F4 CC 31 C3
|
||||
0050 | 94 CC 96 76 32 1E FB 56 90 A4 A9 5B 52 71 17 6A
|
||||
0060 | 55 77 A8 D2 EE DB 5C E3 D9 86 3E 89 01 B1 6F E3
|
||||
0070 | 15 18 3E 25 73 F1 E1 F4 E5 57 D4 1B F4 8C 31 91
|
||||
0080 | 35 4C 36 80 A0 0F 4F BF 28 6E 98 C9 58 25 03 4E
|
||||
0090 | 5B A1 E8 23 86 3D B5 31 BB AA 7C C4 12 1C 63 3D
|
||||
00A0 | 33 1E AB 18 3F E2 25 49 3E 9F 3B EC BB C5 59 96
|
||||
00B0 | 6B 30 10 B0 5B 51 09 1C E6 D1 45 95 58 3D 03 DC
|
||||
00C0 | DC AA BE 54 6D 1B 8C A9 47 9F 0D AE F9 A6 6A D6
|
||||
00D0 | 84 30 70 40 11 0C 77 09 22 C7 E7 51 5B F2 B2 F8
|
||||
00E0 | 1C 89 3A 04 48 7A E8 3D AA 42 FF 02 CB 27 DF E0
|
||||
00F0 | 73 03 98 48 F8 F4 DC 0E CE 4A 43 73 BC 6F 2C 4B
|
||||
0100 | 13 15 22 7E 81 25 75 6D 46 06 50 C9 A5 8D D6 34
|
||||
0110 | F3 20 FF BB 56 CC 73 C9 B2 3F 9E E1 17 2B 5C 23
|
||||
0120 | EE C1 B9 67 32 2D F9 69 8E FB 42 0C 04 29 F2 6C
|
||||
0130 | 57 3B 57 75 CD 07 C6 4B F2 2B F8 DB 86 43 6D 86
|
||||
0140 | BA E7 AF 3D 3C 10 2A C4 95 F4 02 15 89 58 E5 A8
|
||||
0150 | 9D 13 44 74 7E 68 14 83 89 D4 4C 66 3E B1 B2 3E
|
||||
0160 | 8E 7E BA 8F 39 22 16 E0 30 2F AA B3 B7 C6 C0 32
|
||||
0170 | 3D 44 32 45 8A 28 01 4A 43 6E 37 50 D5 96 6D 85
|
||||
0180 | 52 F3 E5 6D 7C A1 44 0E 5E 88 97 F7 40 2D 47 11
|
||||
0190 | B2 8A B5 75 3B 66 CC 4B 0D 1A 8A 37 BE 59 B1 BA
|
||||
01A0 | C7 D5 57 04 AB FB 1D 29 46 38 F6 56 16 FD 6C 5B
|
||||
01B0 | 4D AE 18 04 89 09 C3 9F 45 D4 4C F5 1B FC 00 75
|
||||
01C0 | 8E B4 FE 49 FA 2B 0A 48 27 9B 4F 36 11 D3 69 11
|
||||
01D0 | DB EB 0F 25 22 77 82 C7 AB 2A 95 28 1A F1 EF 19
|
||||
01E0 | 6A 6C 3D 1B 5D 10 95 69 FC 65 95 FD 67 6E A0 53
|
||||
01F0 | DA 3E 78 BC E4 3F 90 7B EA 78 C0 8B CF 49 F4 D9
|
||||
0200 | BF 60 10 F5 2F BA 7E 7A 0B 44 84 CD 8C F1 0D 1A
|
||||
0210 | 5E AE 88 38 80 93 AA 7A 68 78 73 07 E5 23 FF CB
|
||||
0220 | 35 14 92 74 E2 7A 96 6B BC B4 04 29 C4 41 DD C2
|
||||
0230 | 3F 91 A8 15 47 94 10 EE 50 52 C8 60 B9 75 05 9D
|
||||
0240 | E3 CE 60 C8 DF 96 E1 F5 A3 96 E3 90 AD DC 25 87
|
||||
0250 | 94 65 6A 52 B6 89 EA AC 8F 41 3B 4D 1A 74 F6 59
|
||||
0260 | EA 2C 50 72 0A C2 3E A7 28 63 FA 05 C9 37 00 68
|
||||
0270 | E0 00 32 73 C8 7C 68 F2 4D 57 30 05 8D A8 5D 21
|
||||
0280 | 7A 47 E9 F8 96 94 AC 4A FF AE 00 31</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 = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>011CE7FEE0973A65</code></td>
|
||||
<td><code>0150C8EEFDBA3A65</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>E8020000</code> (744 in decimal)</td>
|
||||
<td><code>A0020000</code> (672 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE5002000A66A322ECE3E31FF9214141</code> <code>F0BEC8FE93F72F3DA1D816F71241321C</code> <code>A74B60687BCAF7B579D9C2DA5470B549</code> <code>1600F501068671978C8E345B2F563443</code> <code>972FA19D8B1AEF596A7CC2B377734E92</code> <code>A3789F41326F8F8D22F2157477000565</code> <code>0615819AE3193F65818B06D573D48894</code> <code>8B1BC32EF6DF70588F013F114E1065B2</code> <code>336D05554C765E8A9AA43890F8F4DE1C</code> <code>AED6DD44EFC0A56C7BA054B305F9A6DE</code> <code>A42768E77257CCFD623E1D6648B70B30</code> <code>2D635CB9EBD0E12128998863D0672EB2</code> <code>FCB1C136D580A92C8BFD8D37FA791043</code> <code>C619BBA9FFADA7137BEC2175758C513A</code> <code>333901A77B695032FC72A7F19214C23C</code> <code>180DB651C4ADBB19C56E3213C0047810</code> <code>624AB08A4B1326E9EC5C3C7C41595015</code> <code>00BC49D0CF8115E2FE54FD0FAD25A0E0</code> <code>B899BCF8EE7AFBE041D28C21699D6271</code> <code>3199B6787B74DC6B7CA85EFB7CF2924F</code> <code>9F4D0B4D6AEE498D68EC427728175FD1</code> <code>17A586F94BA2537FA573EF4DE831D777</code> <code>BC59C920F0311CEF301370DDC64C7210</code> <code>65A964CAE9999CD9CECAC3DCA1AE7481</code> <code>80AEF6F96184AC92FE073C8497DB88D8</code> <code>10BC5FFF145B8B38CB1BE060FF66ADAB</code> <code>002CD47349EDEACA3A27D262ECE64040</code> <code>EB8E16827BFBFF76F3134B3A87E2D503</code> <code>14D17DABB589BE542C717FBA1734CF11</code> <code>5A320998657BD51E33B9A92958A9F37C</code> <code>79366213DFB5C9233D8C4925C766EB2F</code> <code>FB7095392FB930D6F1B997387C75965A</code> <code>24F4D6C8F90C2D854FC5262A63682369</code> <code>75B9F8A888065F477CEDB9B337C27BDE</code> <code>8E231EFB09C47B2FD5274B08EF438EBA</code> <code>455A63816F517BFA3884E8A2C13B95F1</code> <code>3DB979291F1FDC8F50A5150F4E97AC24</code><br> <code>71813C7C</code></td>
|
||||
<td><code>FE50020016469CB89D843B92A550B220</code> <code>086A3F84F4CC31C394CC9676321EFB56</code> <code>90A4A95B5271176A5577A8D2EEDB5CE3</code> <code>D9863E8901B16FE315183E2573F1E1F4</code> <code>E557D41BF48C3191354C3680A00F4FBF</code> <code>286E98C95825034E5BA1E823863DB531</code> <code>BBAA7CC4121C633D331EAB183FE22549</code> <code>3E9F3BECBBC559966B3010B05B51091C</code> <code>E6D14595583D03DCDCAABE546D1B8CA9</code> <code>479F0DAEF9A66AD684307040110C7709</code> <code>22C7E7515BF2B2F81C893A04487AE83D</code> <code>AA42FF02CB27DFE073039848F8F4DC0E</code> <code>CE4A4373BC6F2C4B1315227E8125756D</code> <code>460650C9A58DD634F320FFBB56CC73C9</code> <code>B23F9EE1172B5C23EEC1B967322DF969</code> <code>8EFB420C0429F26C573B5775CD07C64B</code> <code>F22BF8DB86436D86BAE7AF3D3C102AC4</code> <code>95F402158958E5A89D1344747E681483</code> <code>89D44C663EB1B23E8E7EBA8F392216E0</code> <code>302FAAB3B7C6C0323D4432458A28014A</code> <code>436E3750D5966D8552F3E56D7CA1440E</code> <code>5E8897F7402D4711B28AB5753B66CC4B</code> <code>0D1A8A37BE59B1BAC7D55704ABFB1D29</code> <code>4638F65616FD6C5B4DAE18048909C39F</code> <code>45D44CF51BFC00758EB4FE49FA2B0A48</code> <code>279B4F3611D36911DBEB0F25227782C7</code> <code>AB2A95281AF1EF196A6C3D1B5D109569</code> <code>FC6595FD676EA053DA3E78BCE43F907B</code> <code>EA78C08BCF49F4D9BF6010F52FBA7E7A</code> <code>0B4484CD8CF10D1A5EAE88388093AA7A</code> <code>68787307E523FFCB35149274E27A966B</code> <code>BCB40429C441DDC23F91A815479410EE</code> <code>5052C860B975059DE3CE60C8DF96E1F5</code> <code>A396E390ADDC258794656A52B689EAAC</code> <code>8F413B4D1A74F659EA2C50720AC23EA7</code> <code>2863FA05C9370068E0003273C87C68F2</code> <code>4D5730058DA85D217A47E9F89694AC4A</code><br> <code>FFAE0031</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = B60FE699BB883EF0C6A7A85A8F1360974EF556C24DE11B9EF09B2AC07
|
|||
<!-- 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 = 0A66A322ECE3E31FF9214141F0BEC8FE93F72F3DA1D816F71241321CA74B60687BCAF7B579D9C2DA5470B5491600F501068671978C8E345B2F563443972FA19D8B1AEF596A7CC2B377734E92A3789F41326F8F8D22F21574770005650615819AE3193F65818B06D573D488948B1BC32EF6DF70588F013F114E1065B2336D05554C765E8A9AA43890F8F4DE1CAED6DD44EFC0A56C7BA054B305F9A6DEA42768E77257CCFD623E1D6648B70B302D635CB9EBD0E12128998863D0672EB2FCB1C136D580A92C8BFD8D37FA791043C619BBA9FFADA7137BEC2175758C513A333901A77B695032FC72A7F19214C23C180DB651C4ADBB19C56E3213C0047810624AB08A4B1326E9EC5C3C7C4159501500BC49D0CF8115E2FE54FD0FAD25A0E0B899BCF8EE7AFBE041D28C21699D62713199B6787B74DC6B7CA85EFB7CF2924F9F4D0B4D6AEE498D68EC427728175FD117A586F94BA2537FA573EF4DE831D777BC59C920F0311CEF301370DDC64C721065A964CAE9999CD9CECAC3DCA1AE748180AEF6F96184AC92FE073C8497DB88D810BC5FFF145B8B38CB1BE060FF66ADAB002CD47349EDEACA3A27D262ECE64040EB8E16827BFBFF76F3134B3A87E2D50314D17DABB589BE542C717FBA1734CF115A320998657BD51E33B9A92958A9F37C79366213DFB5C9233D8C4925C766EB2FFB7095392FB930D6F1B997387C75965A24F4D6C8F90C2D854FC5262A6368236975B9F8A888065F477CEDB9B337C27BDE8E231EFB09C47B2FD5274B08EF438EBA455A63816F517BFA3884E8A2C13B95F13DB979291F1FDC8F50A5150F4E97AC2471813C7C
|
||||
tmp_aes_key = D7F10579D845F23B0890169D6EE870E5B8A2D06772E0F57197C4CB2235893E6C
|
||||
tmp_aes_iv = BDC459CF6ACB4C9770EE42F9AF0822E1A2D7B537AB4F7B8D54163B62FB51968E</code></pre>
|
||||
<pre><code>encrypted_answer = 16469CB89D843B92A550B220086A3F84F4CC31C394CC9676321EFB5690A4A95B5271176A5577A8D2EEDB5CE3D9863E8901B16FE315183E2573F1E1F4E557D41BF48C3191354C3680A00F4FBF286E98C95825034E5BA1E823863DB531BBAA7CC4121C633D331EAB183FE225493E9F3BECBBC559966B3010B05B51091CE6D14595583D03DCDCAABE546D1B8CA9479F0DAEF9A66AD684307040110C770922C7E7515BF2B2F81C893A04487AE83DAA42FF02CB27DFE073039848F8F4DC0ECE4A4373BC6F2C4B1315227E8125756D460650C9A58DD634F320FFBB56CC73C9B23F9EE1172B5C23EEC1B967322DF9698EFB420C0429F26C573B5775CD07C64BF22BF8DB86436D86BAE7AF3D3C102AC495F402158958E5A89D1344747E68148389D44C663EB1B23E8E7EBA8F392216E0302FAAB3B7C6C0323D4432458A28014A436E3750D5966D8552F3E56D7CA1440E5E8897F7402D4711B28AB5753B66CC4B0D1A8A37BE59B1BAC7D55704ABFB1D294638F65616FD6C5B4DAE18048909C39F45D44CF51BFC00758EB4FE49FA2B0A48279B4F3611D36911DBEB0F25227782C7AB2A95281AF1EF196A6C3D1B5D109569FC6595FD676EA053DA3E78BCE43F907BEA78C08BCF49F4D9BF6010F52FBA7E7A0B4484CD8CF10D1A5EAE88388093AA7A68787307E523FFCB35149274E27A966BBCB40429C441DDC23F91A815479410EE5052C860B975059DE3CE60C8DF96E1F5A396E390ADDC258794656A52B689EAAC8F413B4D1A74F659EA2C50720AC23EA72863FA05C9370068E0003273C87C68F24D5730058DA85D217A47E9F89694AC4AFFAE0031
|
||||
tmp_aes_key = 3653556166227FF7E7BD25321B0AE7875E74D441E9E43BA3DF41EECD120219BE
|
||||
tmp_aes_iv = 65DEAC819763A72F155B15D022F049A8AC61F69E6F04E8764738496E9AD1C2F1</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = FAD90E806814194681B0D8680BE3CAECA8D42D2FBA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004DFF29C1AE8B4835E8296AA78F4554EF153A5A3F9AF51BD75745AB36FFC015860891E9BA438036FD0B3EEAEE319E4D462AE7B168481CD087E4429EC680D3599891CC717FA0C833EEAD5BF8B35F85F61159BC818CE1342030B27CDC4F061B607EC97419AAE95DDF1DE355ED834AAD39627D6989A86166CEA2C5ED4AB3D9A177E6552D39C0EB8402F5F62A2AA14EB28BDD4DE11B5252A4FBE7A0B3BD2943C2DB2DCADDF73CCE36A24E4EF2ADEBFBFC4D641419C43625DF673AA8031F994793ED2EAC8C491F3F93D6AE5621DFACC1DB1F6704AF17C789226860CB5C5A6BBC23A2605EF240588F58FC08DCDB8A233C577F41C68A0AF443B9A940466207B6DC61BD25E0973A65B431437C47CF5365
|
||||
answer = BA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004DFF29C1AE8B4835E8296AA78F4554EF153A5A3F9AF51BD75745AB36FFC015860891E9BA438036FD0B3EEAEE319E4D462AE7B168481CD087E4429EC680D3599891CC717FA0C833EEAD5BF8B35F85F61159BC818CE1342030B27CDC4F061B607EC97419AAE95DDF1DE355ED834AAD39627D6989A86166CEA2C5ED4AB3D9A177E6552D39C0EB8402F5F62A2AA14EB28BDD4DE11B5252A4FBE7A0B3BD2943C2DB2DCADDF73CCE36A24E4EF2ADEBFBFC4D641419C43625DF673AA8031F994793ED2EAC8C491F3F93D6AE5621DFACC1DB1F6704AF17C789226860CB5C5A6BBC23A2605EF240588F58FC08DCDB8A233C577F41C68A0AF443B9A940466207B6DC61BD25E0973A65B431437C47CF5365</code></pre>
|
||||
<pre><code>answer_with_hash = FD8B2C21EEA966184B4F3D763E52B69B960378EFBA0D89B543FE8B3BA64AAA94F02039D55E62388CAA919A9837CA9A0B67B51BBAC67DFE8503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000409336942FA3C97C6AD3323142F46D5064103C031CD502034B9FBC5E94293E297862C8B97083A683BD4768EFA2C1AE46EC4299D1A7CCB107B1BBA8FA70896F12D955DD386A6ED21944A356FF1363E225B62B532997B0038F09F3530E61AD47EABB797DE592C7237F682CE1EBF1CF5F91290377D53F963C9DB8283B1C60DA21B2479478A26EF2E32EA084421B8CA88878ED6A8F56DFF468572577A77D36BDF0ABAB727DB6D6D99702AAB346E35EF14001829B2F172992C2C0D5D848BB23008E150635BF47BA1430629CBF44FF58A4AB497CCA7AA7B19E91201BF444AD2A3606FB4560787B72655BB14A12B715914DF594531FAF3BCE50B226F18092E43C97C4DFDBA3A65D38460D266140F50
|
||||
answer = BA0D89B543FE8B3BA64AAA94F02039D55E62388CAA919A9837CA9A0B67B51BBAC67DFE8503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000409336942FA3C97C6AD3323142F46D5064103C031CD502034B9FBC5E94293E297862C8B97083A683BD4768EFA2C1AE46EC4299D1A7CCB107B1BBA8FA70896F12D955DD386A6ED21944A356FF1363E225B62B532997B0038F09F3530E61AD47EABB797DE592C7237F682CE1EBF1CF5F91290377D53F963C9DB8283B1C60DA21B2479478A26EF2E32EA084421B8CA88878ED6A8F56DFF468572577A77D36BDF0ABAB727DB6D6D99702AAB346E35EF14001829B2F172992C2C0D5D848BB23008E150635BF47BA1430629CBF44FF58A4AB497CCA7AA7B19E91201BF444AD2A3606FB4560787B72655BB14A12B715914DF594531FAF3BCE50B226F18092E43C97C4DFDBA3A65D38460D266140F50</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 3F E0 76 CF 55 FF 9F 84 87 51 A6 62
|
||||
0010 | 1D FA F4 B6 72 25 BE E1 1E B0 B4 BF 6F D2 72 17
|
||||
0020 | 47 13 67 68 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 43 FE 8B 3B A6 4A AA 94 F0 20 39 D5
|
||||
0010 | 5E 62 38 8C AA 91 9A 98 37 CA 9A 0B 67 B5 1B BA
|
||||
0020 | C6 7D FE 85 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 = BA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676
|
|||
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 | 4D FF 29 C1 AE 8B 48 35 E8 29 6A A7 8F 45 54 EF
|
||||
0140 | 15 3A 5A 3F 9A F5 1B D7 57 45 AB 36 FF C0 15 86
|
||||
0150 | 08 91 E9 BA 43 80 36 FD 0B 3E EA EE 31 9E 4D 46
|
||||
0160 | 2A E7 B1 68 48 1C D0 87 E4 42 9E C6 80 D3 59 98
|
||||
0170 | 91 CC 71 7F A0 C8 33 EE AD 5B F8 B3 5F 85 F6 11
|
||||
0180 | 59 BC 81 8C E1 34 20 30 B2 7C DC 4F 06 1B 60 7E
|
||||
0190 | C9 74 19 AA E9 5D DF 1D E3 55 ED 83 4A AD 39 62
|
||||
01A0 | 7D 69 89 A8 61 66 CE A2 C5 ED 4A B3 D9 A1 77 E6
|
||||
01B0 | 55 2D 39 C0 EB 84 02 F5 F6 2A 2A A1 4E B2 8B DD
|
||||
01C0 | 4D E1 1B 52 52 A4 FB E7 A0 B3 BD 29 43 C2 DB 2D
|
||||
01D0 | CA DD F7 3C CE 36 A2 4E 4E F2 AD EB FB FC 4D 64
|
||||
01E0 | 14 19 C4 36 25 DF 67 3A A8 03 1F 99 47 93 ED 2E
|
||||
01F0 | AC 8C 49 1F 3F 93 D6 AE 56 21 DF AC C1 DB 1F 67
|
||||
0200 | 04 AF 17 C7 89 22 68 60 CB 5C 5A 6B BC 23 A2 60
|
||||
0210 | 5E F2 40 58 8F 58 FC 08 DC DB 8A 23 3C 57 7F 41
|
||||
0220 | C6 8A 0A F4 43 B9 A9 40 46 62 07 B6 DC 61 BD 25
|
||||
0230 | E0 97 3A 65</code></pre>
|
||||
0130 | 04 09 33 69 42 FA 3C 97 C6 AD 33 23 14 2F 46 D5
|
||||
0140 | 06 41 03 C0 31 CD 50 20 34 B9 FB C5 E9 42 93 E2
|
||||
0150 | 97 86 2C 8B 97 08 3A 68 3B D4 76 8E FA 2C 1A E4
|
||||
0160 | 6E C4 29 9D 1A 7C CB 10 7B 1B BA 8F A7 08 96 F1
|
||||
0170 | 2D 95 5D D3 86 A6 ED 21 94 4A 35 6F F1 36 3E 22
|
||||
0180 | 5B 62 B5 32 99 7B 00 38 F0 9F 35 30 E6 1A D4 7E
|
||||
0190 | AB B7 97 DE 59 2C 72 37 F6 82 CE 1E BF 1C F5 F9
|
||||
01A0 | 12 90 37 7D 53 F9 63 C9 DB 82 83 B1 C6 0D A2 1B
|
||||
01B0 | 24 79 47 8A 26 EF 2E 32 EA 08 44 21 B8 CA 88 87
|
||||
01C0 | 8E D6 A8 F5 6D FF 46 85 72 57 7A 77 D3 6B DF 0A
|
||||
01D0 | BA B7 27 DB 6D 6D 99 70 2A AB 34 6E 35 EF 14 00
|
||||
01E0 | 18 29 B2 F1 72 99 2C 2C 0D 5D 84 8B B2 30 08 E1
|
||||
01F0 | 50 63 5B F4 7B A1 43 06 29 CB F4 4F F5 8A 4A B4
|
||||
0200 | 97 CC A7 AA 7B 19 E9 12 01 BF 44 4A D2 A3 60 6F
|
||||
0210 | B4 56 07 87 B7 26 55 BB 14 A1 2B 71 59 14 DF 59
|
||||
0220 | 45 31 FA F3 BC E5 0B 22 6F 18 09 2E 43 C9 7C 4D
|
||||
0230 | FD BA 3A 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 = BA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE0001004DFF29C1AE8B4835E8296AA7</code> <code>8F4554EF153A5A3F9AF51BD75745AB36</code> <code>FFC015860891E9BA438036FD0B3EEAEE</code> <code>319E4D462AE7B168481CD087E4429EC6</code> <code>80D3599891CC717FA0C833EEAD5BF8B3</code> <code>5F85F61159BC818CE1342030B27CDC4F</code> <code>061B607EC97419AAE95DDF1DE355ED83</code> <code>4AAD39627D6989A86166CEA2C5ED4AB3</code> <code>D9A177E6552D39C0EB8402F5F62A2AA1</code> <code>4EB28BDD4DE11B5252A4FBE7A0B3BD29</code> <code>43C2DB2DCADDF73CCE36A24E4EF2ADEB</code> <code>FBFC4D641419C43625DF673AA8031F99</code> <code>4793ED2EAC8C491F3F93D6AE5621DFAC</code> <code>C1DB1F6704AF17C789226860CB5C5A6B</code> <code>BC23A2605EF240588F58FC08DCDB8A23</code> <code>3C577F41C68A0AF443B9A940466207B6</code><br> <code>DC61BD25</code></td>
|
||||
<td><code>FE0001000409336942FA3C97C6AD3323</code> <code>142F46D5064103C031CD502034B9FBC5</code> <code>E94293E297862C8B97083A683BD4768E</code> <code>FA2C1AE46EC4299D1A7CCB107B1BBA8F</code> <code>A70896F12D955DD386A6ED21944A356F</code> <code>F1363E225B62B532997B0038F09F3530</code> <code>E61AD47EABB797DE592C7237F682CE1E</code> <code>BF1CF5F91290377D53F963C9DB8283B1</code> <code>C60DA21B2479478A26EF2E32EA084421</code> <code>B8CA88878ED6A8F56DFF468572577A77</code> <code>D36BDF0ABAB727DB6D6D99702AAB346E</code> <code>35EF14001829B2F172992C2C0D5D848B</code> <code>B23008E150635BF47BA1430629CBF44F</code> <code>F58A4AB497CCA7AA7B19E91201BF444A</code> <code>D2A3606FB4560787B72655BB14A12B71</code> <code>5914DF594531FAF3BCE50B226F18092E</code><br> <code>43C97C4D</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>E0973A65</code> (1698338784 in decimal)</td>
|
||||
<td><code>FDBA3A65</code> (1698347773 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676
|
|||
<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 = EF0839CEF61C5CBC1254441347CA1DFC59F87BB1EFEF0EACD64EB31FCF33FABBD0A6596A2E26622672520B76B8843E80BC81C615421124CDD566274BF6B777D5199C753D80B1F35E290FC5E948E70025DD2E5E3F2DCDDCDCB00AE696AA174E9C474BD13A9C7A6AF1757E44346863A850912D0389916BCCB04047CA6AD7975B756C376E0B22CFF8E470A43F4DB72C45CE5A6ACD215E7F367941DA3335B73D783ED1D11565A47093F2B93C77EE635A04DC09F15C3E087D57C36F3A52763C560135BA36EAAC74C82DF3A47EA2042FE1DC457396B8A047FA4261CC4DFF969E5A27DEBE4328A201B31911980A67E1C33E2CC4DB82DA8011C36C6C8A18EABECEBF9AA9</code></pre>
|
||||
<pre><code>b = 37D557FE060941797BBA0A5A6759F2D6670F0C2AB97B48E5DAD4789FCCC0E6494793122EC0A092CFF8DA51B38C1ACD1BEDCE504C7D2720C269B2AB02FD2E7635DE76F5F2FA5B0932BB9B10A637E934EAB7F21CA21FA558110AD1275F96CBE4515F4E867F81FCD975EAA3B54A880BC4DBC43030066E0F451DE80DC71D7A5FFF0C1F17743E4F146F4A78E7B3E164E723CF0A31F51840C709C66ABAF1182F608800E571C07F9C7F79DB14863B6DAE3AC132B8DB265616EAA26109D310909837F7E06E079C0613966FE778496D05627F51CAB596087434622F9EBDED108C930399995CB2E1BBECEB307C3B0DA2A661357B52B2421F0151C89E356BCD38BB0AE798B2</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 = 60B2E6349B4EF613EDDF247CCA03D0E231FBBF9CFA0B952353C1C031AB0BB1B8AA913493D2B02EF543EDE4A68222163D9D990000A2A5168EB243071F06FAC6C24CE2B3216CBA78DAE1B202A7068E2BB90FF4274018A5E168B60AB368332123F0BB72AAD09C98B814F7DEF3E159F33345338569B64819BF5A1ABEE037E5C978B46E41688A28F30AAFC91022577B11C0EB167AC038DCA14A1C80A4DE8854D2B2664D01AA07E209C738F47DFDFA8B0956CEBCB0A53A02932E248857233E13078DB6153938C9488071E2AC2DEC328E14EC0A8A4EAC9C0C77691D04AD702510AF617CF350AF01799C3427610B4B8581196B9297CD30B5AD01F5A67EF66A0789521B73</code></pre>
|
||||
<pre><code>g_b = 914976B4519BE9B9509B28A435B5207706180582161A2E83A7A5E22AFD79D77E5B102B1121B8BD75C781045821A67D69966386A30A3D5B3FF614C925C238AE1AFAD611CC47E116147523E059FC4D17CBFB5E4760F6C7EC3BD0E399A91919E2D6478047A4E5270CF3D121A2EF397CA3DE99271C07D1DA27837C2B2399CC5B49FE69406EA1D1722DAA4154D09C4232DE03DE99091A67FECD4692E9C92B631B4ED2A45092D56C24B0943521A3FEE23F067C52C2B857E3A48D4F39DC8960B0392E567403405A9BC686C703255CA229BCCD3CF00242DE58558014EAE5C7B6BEAEC2BE4F960B86AFFE4A7929F6111186E1B132B8C9663AE0569329F61FC73532C886FA</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 3F E0 76 CF 55 FF 9F 84 87 51 A6 62
|
||||
0010 | 1D FA F4 B6 72 25 BE E1 1E B0 B4 BF 6F D2 72 17
|
||||
0020 | 47 13 67 68 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 60 B2 E6 34 9B 4E F6 13 ED DF 24 7C CA 03 D0 E2
|
||||
0040 | 31 FB BF 9C FA 0B 95 23 53 C1 C0 31 AB 0B B1 B8
|
||||
0050 | AA 91 34 93 D2 B0 2E F5 43 ED E4 A6 82 22 16 3D
|
||||
0060 | 9D 99 00 00 A2 A5 16 8E B2 43 07 1F 06 FA C6 C2
|
||||
0070 | 4C E2 B3 21 6C BA 78 DA E1 B2 02 A7 06 8E 2B B9
|
||||
0080 | 0F F4 27 40 18 A5 E1 68 B6 0A B3 68 33 21 23 F0
|
||||
0090 | BB 72 AA D0 9C 98 B8 14 F7 DE F3 E1 59 F3 33 45
|
||||
00A0 | 33 85 69 B6 48 19 BF 5A 1A BE E0 37 E5 C9 78 B4
|
||||
00B0 | 6E 41 68 8A 28 F3 0A AF C9 10 22 57 7B 11 C0 EB
|
||||
00C0 | 16 7A C0 38 DC A1 4A 1C 80 A4 DE 88 54 D2 B2 66
|
||||
00D0 | 4D 01 AA 07 E2 09 C7 38 F4 7D FD FA 8B 09 56 CE
|
||||
00E0 | BC B0 A5 3A 02 93 2E 24 88 57 23 3E 13 07 8D B6
|
||||
00F0 | 15 39 38 C9 48 80 71 E2 AC 2D EC 32 8E 14 EC 0A
|
||||
0100 | 8A 4E AC 9C 0C 77 69 1D 04 AD 70 25 10 AF 61 7C
|
||||
0110 | F3 50 AF 01 79 9C 34 27 61 0B 4B 85 81 19 6B 92
|
||||
0120 | 97 CD 30 B5 AD 01 F5 A6 7E F6 6A 07 89 52 1B 73</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 43 FE 8B 3B A6 4A AA 94 F0 20 39 D5
|
||||
0010 | 5E 62 38 8C AA 91 9A 98 37 CA 9A 0B 67 B5 1B BA
|
||||
0020 | C6 7D FE 85 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 91 49 76 B4 51 9B E9 B9 50 9B 28 A4 35 B5 20 77
|
||||
0040 | 06 18 05 82 16 1A 2E 83 A7 A5 E2 2A FD 79 D7 7E
|
||||
0050 | 5B 10 2B 11 21 B8 BD 75 C7 81 04 58 21 A6 7D 69
|
||||
0060 | 96 63 86 A3 0A 3D 5B 3F F6 14 C9 25 C2 38 AE 1A
|
||||
0070 | FA D6 11 CC 47 E1 16 14 75 23 E0 59 FC 4D 17 CB
|
||||
0080 | FB 5E 47 60 F6 C7 EC 3B D0 E3 99 A9 19 19 E2 D6
|
||||
0090 | 47 80 47 A4 E5 27 0C F3 D1 21 A2 EF 39 7C A3 DE
|
||||
00A0 | 99 27 1C 07 D1 DA 27 83 7C 2B 23 99 CC 5B 49 FE
|
||||
00B0 | 69 40 6E A1 D1 72 2D AA 41 54 D0 9C 42 32 DE 03
|
||||
00C0 | DE 99 09 1A 67 FE CD 46 92 E9 C9 2B 63 1B 4E D2
|
||||
00D0 | A4 50 92 D5 6C 24 B0 94 35 21 A3 FE E2 3F 06 7C
|
||||
00E0 | 52 C2 B8 57 E3 A4 8D 4F 39 DC 89 60 B0 39 2E 56
|
||||
00F0 | 74 03 40 5A 9B C6 86 C7 03 25 5C A2 29 BC CD 3C
|
||||
0100 | F0 02 42 DE 58 55 80 14 EA E5 C7 B6 BE AE C2 BE
|
||||
0110 | 4F 96 0B 86 AF FE 4A 79 29 F6 11 11 86 E1 B1 32
|
||||
0120 | B8 C9 66 3A E0 56 93 29 F6 1F C7 35 32 C8 86 FA</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 = BA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE00010060B2E6349B4EF613EDDF247C</code> <code>CA03D0E231FBBF9CFA0B952353C1C031</code> <code>AB0BB1B8AA913493D2B02EF543EDE4A6</code> <code>8222163D9D990000A2A5168EB243071F</code> <code>06FAC6C24CE2B3216CBA78DAE1B202A7</code> <code>068E2BB90FF4274018A5E168B60AB368</code> <code>332123F0BB72AAD09C98B814F7DEF3E1</code> <code>59F33345338569B64819BF5A1ABEE037</code> <code>E5C978B46E41688A28F30AAFC9102257</code> <code>7B11C0EB167AC038DCA14A1C80A4DE88</code> <code>54D2B2664D01AA07E209C738F47DFDFA</code> <code>8B0956CEBCB0A53A02932E248857233E</code> <code>13078DB6153938C9488071E2AC2DEC32</code> <code>8E14EC0A8A4EAC9C0C77691D04AD7025</code> <code>10AF617CF350AF01799C3427610B4B85</code> <code>81196B9297CD30B5AD01F5A67EF66A07</code><br> <code>89521B73</code></td>
|
||||
<td><code>FE000100914976B4519BE9B9509B28A4</code> <code>35B5207706180582161A2E83A7A5E22A</code> <code>FD79D77E5B102B1121B8BD75C7810458</code> <code>21A67D69966386A30A3D5B3FF614C925</code> <code>C238AE1AFAD611CC47E116147523E059</code> <code>FC4D17CBFB5E4760F6C7EC3BD0E399A9</code> <code>1919E2D6478047A4E5270CF3D121A2EF</code> <code>397CA3DE99271C07D1DA27837C2B2399</code> <code>CC5B49FE69406EA1D1722DAA4154D09C</code> <code>4232DE03DE99091A67FECD4692E9C92B</code> <code>631B4ED2A45092D56C24B0943521A3FE</code> <code>E23F067C52C2B857E3A48D4F39DC8960</code> <code>B0392E567403405A9BC686C703255CA2</code> <code>29BCCD3CF00242DE58558014EAE5C7B6</code> <code>BEAEC2BE4F960B86AFFE4A7929F61111</code> <code>86E1B132B8C9663AE0569329F61FC735</code><br> <code>32C886FA</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 = BA0D89B53FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD272174713676
|
|||
<!-- 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 = 54B643663FE076CF55FF9F848751A6621DFAF4B67225BEE11EB0B4BF6FD27217471367680000000000000000FE00010060B2E6349B4EF613EDDF247CCA03D0E231FBBF9CFA0B952353C1C031AB0BB1B8AA913493D2B02EF543EDE4A68222163D9D990000A2A5168EB243071F06FAC6C24CE2B3216CBA78DAE1B202A7068E2BB90FF4274018A5E168B60AB368332123F0BB72AAD09C98B814F7DEF3E159F33345338569B64819BF5A1ABEE037E5C978B46E41688A28F30AAFC91022577B11C0EB167AC038DCA14A1C80A4DE8854D2B2664D01AA07E209C738F47DFDFA8B0956CEBCB0A53A02932E248857233E13078DB6153938C9488071E2AC2DEC328E14EC0A8A4EAC9C0C77691D04AD702510AF617CF350AF01799C3427610B4B8581196B9297CD30B5AD01F5A67EF66A0789521B73
|
||||
padding = CD99AFDA6E31D2E6F607A23B
|
||||
tmp_aes_key = D7F10579D845F23B0890169D6EE870E5B8A2D06772E0F57197C4CB2235893E6C
|
||||
tmp_aes_iv = BDC459CF6ACB4C9770EE42F9AF0822E1A2D7B537AB4F7B8D54163B62FB51968E</code></pre>
|
||||
<pre><code>data = 54B6436643FE8B3BA64AAA94F02039D55E62388CAA919A9837CA9A0B67B51BBAC67DFE850000000000000000FE000100914976B4519BE9B9509B28A435B5207706180582161A2E83A7A5E22AFD79D77E5B102B1121B8BD75C781045821A67D69966386A30A3D5B3FF614C925C238AE1AFAD611CC47E116147523E059FC4D17CBFB5E4760F6C7EC3BD0E399A91919E2D6478047A4E5270CF3D121A2EF397CA3DE99271C07D1DA27837C2B2399CC5B49FE69406EA1D1722DAA4154D09C4232DE03DE99091A67FECD4692E9C92B631B4ED2A45092D56C24B0943521A3FEE23F067C52C2B857E3A48D4F39DC8960B0392E567403405A9BC686C703255CA229BCCD3CF00242DE58558014EAE5C7B6BEAEC2BE4F960B86AFFE4A7929F6111186E1B132B8C9663AE0569329F61FC73532C886FA
|
||||
padding = B93E0CD9CB863CBE8554B885
|
||||
tmp_aes_key = 3653556166227FF7E7BD25321B0AE7875E74D441E9E43BA3DF41EECD120219BE
|
||||
tmp_aes_iv = 65DEAC819763A72F155B15D022F049A8AC61F69E6F04E8764738496E9AD1C2F1</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 = E5D36877E3E40F80E792AE657D28472BDE7B43FC569C3C40D41A77C2025FBF2E78E5EBBE4D171B07B5A30522AEF617E2848B0794D162A67EA9CF5BC48BDE68B14E0F1D7629E553629239C07FE2F1D4BD90A126041DF4C13C68B7BB50E924CCD8CE91868D912E772FC3237927873B09B87A087F47F0B1CF1B0FC5BAEAEF739D20A13C73E7FEDCD20CAF3B7A137FBB2E4504A5CBD116CF6C1D5A521AA6680791F02A8BDA3C7E638C91C5ACF2FF9EBB4BABD9C7DADFB9E6D855052F988AD49E9838537328F9BD75BF627A0B282EC12781869B9FF87469B830EF9A036AA02CCA00541620D367B61FFD084B49C9D33EA71C3878FC6CC351DB2F1DE09767F5F0041C79F07EB5EE4AB08EDEB49CE16D97E772C7AF3947C300445CE01010E80D9979E0F8F1A5493B95514E9135AE00437F9DF4873E64F91603F1C43915060F4CD881EF78742237CBD4C1D4A903145A2C7D620893</code></pre>
|
||||
<pre><code>encrypted_data = FFD817C837DF7E095D069EB0F61720391C9248546CF06942A0211F7C845798E2583182FB568AFEA3CA203BEC61A757FFBC40896F3A8E3E810477B41A3AA06D237AEB105D7AAF4049207F4F4B22EB68F8309D4877184A5B8B42566D4BD90B903EE70CE66102CD4F401D9ED38EDC960B6BFD9D8D55DDBBBC47069D6335960BE2EB16E4589DA47CE416D6066F9695EA648CF0F02793744C6ECC62C456DCBA21D721A7032F0372037509FDA1AB09927117037FCCE57E54F0543F5A5E395A2F432C7A34F17A2A38EAAD93574231DF204ECCCA7FD4CF5BA7CD28369F9DDDD936F9965B1F1D1CDEF538B4C7F2574C7E4F65F8F724B538145E45D93298FBA4461A148345006CBDB1E10EFBE528F7BE1371E7E074BD088284E3F0B4B84D8CEDF34419DC78F4B7805A55237E3E19D1C625BC61B0D527F92522D0ADD6EE8DDDB2F0840F769AA7BA506BBC992050CD3AF548124BE604</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 64 31 0B 00 E4 97 3A 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 3F E0 76 CF 55 FF 9F 84
|
||||
0020 | 87 51 A6 62 1D FA F4 B6 72 25 BE E1 1E B0 B4 BF
|
||||
0030 | 6F D2 72 17 47 13 67 68 FE 50 01 00 E5 D3 68 77
|
||||
0040 | E3 E4 0F 80 E7 92 AE 65 7D 28 47 2B DE 7B 43 FC
|
||||
0050 | 56 9C 3C 40 D4 1A 77 C2 02 5F BF 2E 78 E5 EB BE
|
||||
0060 | 4D 17 1B 07 B5 A3 05 22 AE F6 17 E2 84 8B 07 94
|
||||
0070 | D1 62 A6 7E A9 CF 5B C4 8B DE 68 B1 4E 0F 1D 76
|
||||
0080 | 29 E5 53 62 92 39 C0 7F E2 F1 D4 BD 90 A1 26 04
|
||||
0090 | 1D F4 C1 3C 68 B7 BB 50 E9 24 CC D8 CE 91 86 8D
|
||||
00A0 | 91 2E 77 2F C3 23 79 27 87 3B 09 B8 7A 08 7F 47
|
||||
00B0 | F0 B1 CF 1B 0F C5 BA EA EF 73 9D 20 A1 3C 73 E7
|
||||
00C0 | FE DC D2 0C AF 3B 7A 13 7F BB 2E 45 04 A5 CB D1
|
||||
00D0 | 16 CF 6C 1D 5A 52 1A A6 68 07 91 F0 2A 8B DA 3C
|
||||
00E0 | 7E 63 8C 91 C5 AC F2 FF 9E BB 4B AB D9 C7 DA DF
|
||||
00F0 | B9 E6 D8 55 05 2F 98 8A D4 9E 98 38 53 73 28 F9
|
||||
0100 | BD 75 BF 62 7A 0B 28 2E C1 27 81 86 9B 9F F8 74
|
||||
0110 | 69 B8 30 EF 9A 03 6A A0 2C CA 00 54 16 20 D3 67
|
||||
0120 | B6 1F FD 08 4B 49 C9 D3 3E A7 1C 38 78 FC 6C C3
|
||||
0130 | 51 DB 2F 1D E0 97 67 F5 F0 04 1C 79 F0 7E B5 EE
|
||||
0140 | 4A B0 8E DE B4 9C E1 6D 97 E7 72 C7 AF 39 47 C3
|
||||
0150 | 00 44 5C E0 10 10 E8 0D 99 79 E0 F8 F1 A5 49 3B
|
||||
0160 | 95 51 4E 91 35 AE 00 43 7F 9D F4 87 3E 64 F9 16
|
||||
0170 | 03 F1 C4 39 15 06 0F 4C D8 81 EF 78 74 22 37 CB
|
||||
0180 | D4 C1 D4 A9 03 14 5A 2C 7D 62 08 93</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 30 E7 06 00 01 BB 3A 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 43 FE 8B 3B A6 4A AA 94
|
||||
0020 | F0 20 39 D5 5E 62 38 8C AA 91 9A 98 37 CA 9A 0B
|
||||
0030 | 67 B5 1B BA C6 7D FE 85 FE 50 01 00 FF D8 17 C8
|
||||
0040 | 37 DF 7E 09 5D 06 9E B0 F6 17 20 39 1C 92 48 54
|
||||
0050 | 6C F0 69 42 A0 21 1F 7C 84 57 98 E2 58 31 82 FB
|
||||
0060 | 56 8A FE A3 CA 20 3B EC 61 A7 57 FF BC 40 89 6F
|
||||
0070 | 3A 8E 3E 81 04 77 B4 1A 3A A0 6D 23 7A EB 10 5D
|
||||
0080 | 7A AF 40 49 20 7F 4F 4B 22 EB 68 F8 30 9D 48 77
|
||||
0090 | 18 4A 5B 8B 42 56 6D 4B D9 0B 90 3E E7 0C E6 61
|
||||
00A0 | 02 CD 4F 40 1D 9E D3 8E DC 96 0B 6B FD 9D 8D 55
|
||||
00B0 | DD BB BC 47 06 9D 63 35 96 0B E2 EB 16 E4 58 9D
|
||||
00C0 | A4 7C E4 16 D6 06 6F 96 95 EA 64 8C F0 F0 27 93
|
||||
00D0 | 74 4C 6E CC 62 C4 56 DC BA 21 D7 21 A7 03 2F 03
|
||||
00E0 | 72 03 75 09 FD A1 AB 09 92 71 17 03 7F CC E5 7E
|
||||
00F0 | 54 F0 54 3F 5A 5E 39 5A 2F 43 2C 7A 34 F1 7A 2A
|
||||
0100 | 38 EA AD 93 57 42 31 DF 20 4E CC CA 7F D4 CF 5B
|
||||
0110 | A7 CD 28 36 9F 9D DD D9 36 F9 96 5B 1F 1D 1C DE
|
||||
0120 | F5 38 B4 C7 F2 57 4C 7E 4F 65 F8 F7 24 B5 38 14
|
||||
0130 | 5E 45 D9 32 98 FB A4 46 1A 14 83 45 00 6C BD B1
|
||||
0140 | E1 0E FB E5 28 F7 BE 13 71 E7 E0 74 BD 08 82 84
|
||||
0150 | E3 F0 B4 B8 4D 8C ED F3 44 19 DC 78 F4 B7 80 5A
|
||||
0160 | 55 23 7E 3E 19 D1 C6 25 BC 61 B0 D5 27 F9 25 22
|
||||
0170 | D0 AD D6 EE 8D DD B2 F0 84 0F 76 9A A7 BA 50 6B
|
||||
0180 | BC 99 20 50 CD 3A F5 48 12 4B E6 04</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>64310B00E4973A65</code></td>
|
||||
<td><code>30E7060001BB3A65</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>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100E5D36877E3E40F80E792AE65</code> <code>7D28472BDE7B43FC569C3C40D41A77C2</code> <code>025FBF2E78E5EBBE4D171B07B5A30522</code> <code>AEF617E2848B0794D162A67EA9CF5BC4</code> <code>8BDE68B14E0F1D7629E553629239C07F</code> <code>E2F1D4BD90A126041DF4C13C68B7BB50</code> <code>E924CCD8CE91868D912E772FC3237927</code> <code>873B09B87A087F47F0B1CF1B0FC5BAEA</code> <code>EF739D20A13C73E7FEDCD20CAF3B7A13</code> <code>7FBB2E4504A5CBD116CF6C1D5A521AA6</code> <code>680791F02A8BDA3C7E638C91C5ACF2FF</code> <code>9EBB4BABD9C7DADFB9E6D855052F988A</code> <code>D49E9838537328F9BD75BF627A0B282E</code> <code>C12781869B9FF87469B830EF9A036AA0</code> <code>2CCA00541620D367B61FFD084B49C9D3</code> <code>3EA71C3878FC6CC351DB2F1DE09767F5</code> <code>F0041C79F07EB5EE4AB08EDEB49CE16D</code> <code>97E772C7AF3947C300445CE01010E80D</code> <code>9979E0F8F1A5493B95514E9135AE0043</code> <code>7F9DF4873E64F91603F1C43915060F4C</code> <code>D881EF78742237CBD4C1D4A903145A2C</code><br> <code>7D620893</code></td>
|
||||
<td><code>FE500100FFD817C837DF7E095D069EB0</code> <code>F61720391C9248546CF06942A0211F7C</code> <code>845798E2583182FB568AFEA3CA203BEC</code> <code>61A757FFBC40896F3A8E3E810477B41A</code> <code>3AA06D237AEB105D7AAF4049207F4F4B</code> <code>22EB68F8309D4877184A5B8B42566D4B</code> <code>D90B903EE70CE66102CD4F401D9ED38E</code> <code>DC960B6BFD9D8D55DDBBBC47069D6335</code> <code>960BE2EB16E4589DA47CE416D6066F96</code> <code>95EA648CF0F02793744C6ECC62C456DC</code> <code>BA21D721A7032F0372037509FDA1AB09</code> <code>927117037FCCE57E54F0543F5A5E395A</code> <code>2F432C7A34F17A2A38EAAD93574231DF</code> <code>204ECCCA7FD4CF5BA7CD28369F9DDDD9</code> <code>36F9965B1F1D1CDEF538B4C7F2574C7E</code> <code>4F65F8F724B538145E45D93298FBA446</code> <code>1A148345006CBDB1E10EFBE528F7BE13</code> <code>71E7E074BD088284E3F0B4B84D8CEDF3</code> <code>4419DC78F4B7805A55237E3E19D1C625</code> <code>BC61B0D527F92522D0ADD6EE8DDDB2F0</code> <code>840F769AA7BA506BBC992050CD3AF548</code><br> <code>124BE604</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 = 698F637A5809CA6C1F8B7331C8CFF8180904A7BC15734CB112399050EB18C14F2521E9C87B9336FBCE45DFE74BC5813F49DB69D122253148ACA790213FDDA5BF7389AC05144B7E7A84615C3C56B657961A8C7460815836ED545D130C5A041FF5520E01D80B7DCDAF15F28530DC029DC448ABEC848D03B1860916E7D3E463C6713353047D5CAD7DC52FAE1D06509462F102DB8551A918C180F29D723928AFBDECD4E33F5C373F9B9B73731A138F02B10E17D8981E1955AA76666057215C56919ABF7EA6CDFBFB3CCEF0BE1ABAEC806E24ADC56B4E4D64B79A0DFB472D77E04428F48B8C46624DBA932EEF8081C066D1C033476BB5224351FA5945632A912A6444</code></pre>
|
||||
<pre><code>auth_key = C16FF603A488B8B9703763755643508071955FAD470B9B870456635CB789FFC3F5052CDBC0C538DDCD59527143C54A64DE9DA6C58CED3344E222DB84535A63B1F147457704F9B810C3946E71A507BE0ED95CB81ABF33043CD48EB988C308B85DDE70FE4667781B302EC74DF31DCDB7FCB2B530A39B86FE49786C356CED4FCB27A039C5F0CF9D14B0499F172BCDFBAA265A122B4C476218A2085F45E1762AF023F49E59F8FA6F5B6B0AB235C4FC1D6D6E10E3903BD3CB6D6F5EF9DBD0131F6022CF9AA5E9E58A63506E334F8D21CAB678C802412D564AD699C82893911CFB021950CFD6734478A445D268FC8DCFBF95068E064BAF0B5F7E495EB88B5DBC80808F</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 74 20 B6 E1 97 3A 65
|
||||
0010 | 38 00 00 00 34 F7 CB 3B 3F E0 76 CF 55 FF 9F 84
|
||||
0020 | 87 51 A6 62 1D FA F4 B6 72 25 BE E1 1E B0 B4 BF
|
||||
0030 | 6F D2 72 17 47 13 67 68 F6 2E 0E 16 84 ED C7 A4
|
||||
0040 | A9 D5 A2 AF D5 22 C1 04</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 90 E8 40 FE BA 3A 65
|
||||
0010 | 90 00 00 00 34 F7 CB 3B 43 FE 8B 3B A6 4A AA 94
|
||||
0020 | F0 20 39 D5 5E 62 38 8C AA 91 9A 98 37 CA 9A 0B
|
||||
0030 | 67 B5 1B BA C6 7D FE 85 99 8D 45 B9 A5 F7 7F D5
|
||||
0040 | D4 3E 1B 7A BA 8C 47 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>017420B6E1973A65</code></td>
|
||||
<td><code>0190E840FEBA3A65</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>38000000</code> (56 in decimal)</td>
|
||||
<td><code>90000000</code> (144 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>3FE076CF55FF9F848751A6621DFAF4B6</code></td>
|
||||
<td><code>43FE8B3BA64AAA94F02039D55E62388C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>7225BEE11EB0B4BF6FD2721747136768</code></td>
|
||||
<td><code>AA919A9837CA9A0B67B51BBAC67DFE85</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>F62E0E1684EDC7A4A9D5A2AFD522C104</code></td>
|
||||
<td><code>998D45B9A5F77FD5D43E1B7ABA8C4729</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