mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-01-05 18:38:19 +01:00
Update content of files
This commit is contained in:
parent
cd88a6f46f
commit
a30fffda0b
2 changed files with 210 additions and 210 deletions
|
@ -112,17 +112,17 @@ To add new dialogs to the saved dialog list, simply forward messages from any no
|
|||
</ul>
|
||||
<p>Saving messages from private chats with users with forward privacy enabled will add them to a saved dialog entry of a special anonymous user with <code>id=2666000</code>. </p>
|
||||
<p>Clients may use the following pseudocode to manually populate the <code>saved_peer_id</code> of old <code>layer < 170</code> <a href="/constructor/message">message</a>s stored in the <strong>local</strong> database. </p>
|
||||
<pre><code class="language-java">// user_id is the ID of the current user.
|
||||
<pre><code>// user_id is the ID of the current user.
|
||||
|
||||
if (message.peer_id == user_id) {
|
||||
if (message.fwd_from.saved_from_peer) {
|
||||
message.saved_peer_id = message.fwd_from.saved_from_peer
|
||||
} elseif (message.fwd_from.from_id) {
|
||||
<a href='/constructor/message.saved_peer_id'>message.saved_peer_id</a> = <a href='/constructor/user_id'>user_id</a>;
|
||||
message.saved_peer_id = user_id;
|
||||
} elseif (message.fwd_from.from_name) {
|
||||
<a href='/constructor/message.saved_peer_id'>message.saved_peer_id</a> = <a href='/type/2666000'>2666000</a>;
|
||||
message.saved_peer_id = 2666000;
|
||||
} else {
|
||||
<a href='/constructor/message.saved_peer_id'>message.saved_peer_id</a> = <a href='/constructor/user_id'>user_id</a>;
|
||||
message.saved_peer_id = user_id;
|
||||
}
|
||||
}</code></pre>
|
||||
<p>Sending (not forwarding from another dialog) new messages directly to ourselves will add them to a saved dialog entry with ourselves. </p>
|
||||
|
|
|
@ -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 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>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 1C 5D 0E 00 90 2E C5 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 80 0B A7 18 BC 0E 7E A3
|
||||
0020 | F5 90 50 67 F7 2A 95 64</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>44590D005427C565</code></td>
|
||||
<td><code>1C5D0E00902EC565</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>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</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 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
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 80 52 2D 90 2E C5 65
|
||||
0010 | C4 00 00 00 63 24 16 05 80 0B A7 18 BC 0E 7E A3
|
||||
0020 | F5 90 50 67 F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B
|
||||
0030 | 03 00 6E FB C2 7F 6E EF 08 25 2D 69 08 47 91 B6
|
||||
0040 | D1 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>016486F85427C565</code></td>
|
||||
<td><code>0180522D902EC565</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>84000000</code> (132 in decimal)</td>
|
||||
<td><code>C4000000</code> (196 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>0821489646FBB5259B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2398332033189619099</td>
|
||||
<td><code>08252D69084791B6D1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2678912837636699857</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 = 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>
|
||||
<pre><code>pq = 2678912837636699857</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2678912837636699857 = 1396420087 * 1918414711</code></p>
|
||||
<pre><code>p = 1396420087
|
||||
q = 1918414711</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 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
|
||||
<pre><code>0000 | 95 5F F5 A9 08 25 2D 69 08 47 91 B6 D1 00 00 00
|
||||
0010 | 04 53 3B AD F7 00 00 00 04 72 58 AF 77 00 00 00
|
||||
0020 | 80 0B A7 18 BC 0E 7E A3 F5 90 50 67 F7 2A 95 64
|
||||
0030 | D6 A3 85 6C 3E 35 03 4B 03 00 6E FB C2 7F 6E EF
|
||||
0040 | 10 CA 08 B0 00 13 DB 56 A7 C3 8D FC E6 08 E2 50
|
||||
0050 | DF A3 46 47 9E 07 5A 31 C0 7B C0 64 C0 66 1C E6
|
||||
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 = 1623537463</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>0821489646FBB5259B000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2398332033189619099</td>
|
||||
<td><code>08252D69084791B6D1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2678912837636699857</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>04580CAEBD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1477226173</td>
|
||||
<td><code>04533BADF7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1396420087</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>0460C53737000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1623537463</td>
|
||||
<td><code>047258AF77000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1918414711</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>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>13BC04D073971FA01B33FD074FCC123C</code> <code>33BB95FC8CDE98010BAE6205429E5547</code></td>
|
||||
<td><code>10CA08B00013DB56A7C38DFCE608E250</code> <code>DFA346479E075A31C07BC064C0661CE6</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1623537463</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 = 955FF5A90821489646FBB5259B00000004580CAEBD0000000460C5373700000085D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E13BC04D073971FA01B33FD074FCC123C33BB95FC8CDE98010BAE6205429E554702000000
|
||||
random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C5B5569A9FE5E2472F7B962426E0ADEA1BB4030BEE3AA6A292908D5FD3408F5110F44E06601203D91CCF55D3CE7BA8B5FA85CBD4A77400A80B7F2FA0284C1FAC</code></pre>
|
||||
<pre><code>data = 955FF5A908252D69084791B6D100000004533BADF7000000047258AF77000000800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF10CA08B00013DB56A7C38DFCE608E250DFA346479E075A31C07BC064C0661CE602000000
|
||||
random_padding_bytes = 5602F0EF85C8F5C01164BE7AE51F8853BFC80F37140F9489ACDF5B9E85D22F97EC9D7D094053E4C8C035AD6F08BEA39D94C7B50F74D9EF318AADBB025DC5EB9D2F4898BC4BD969124E5ED89EDBBD680C11B882CA01ECEBA7F5CEF9C2</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 = AB09AB1EAC21B3D1F9DAAF1684D4DC1D8216B3DC47A59FB8B5EF0AAADBCF8F9455061CE2D95CCEB91CD3D2EFDAEE11D6E7241D8A7B57E1AB937EF9BF5227E79B3EFBB06056B155ECE06DF6A5EDEBD013D4F6AC5F0BDFCDE1CBD3B7AFE213C230704FBC2E8DA608BD885CE7B624781E48341636ED752464A03E5806904B723208B6D953070A8B7A822F039A8051FA5ADED15B362850F5813B5F7F13D04657550346BD76380841DEE24F5993E8E8EB4AEADEBE6EBD72F0114D95AB85A9DE322596B6EE226F4D46952C1657A0FF474CD660C490FA6C17449625FD6D91C6B4700F911AEC5D58829014686411AB1B0D723C1FE66F2D1D9A9F9D234BB5ABAC1ED22DD1</code></pre>
|
||||
<pre><code>encrypted_data = 9ADEE1E1701055AC3B88E379136412DB5A0AC411CC4F2521BFEDFC4A8D5550955B79B4AB3785A575B4CA81B4E24A199BD1BD14B74107C5F1D93AA1369222018B1727AD469A055A2B98FB1D27190FACAA22D35391E5F6C6E5A7E9935003272F8A95A8608D9AB2BEDA7D47470F441B204A9CBDB4A8A44771CD6AA20B1514DBD75620DA1723D37E7BA13BAB536EA869B14D3C3608F85EFAE52825E7F6EAB56A1B9AED7EB82B3B57DC4900CF91C62B59B507188B5FE33986E7E45C5EB00093E0062144B5B9FB2412D835DDA7961D41AC39D201C72DD8A6EEC47D96B012801F35F62B7EF6BDDE0EC124AAB6A2C4EBB5A9F6207B8BF62A650B8C0C9F7C51DECF4748A7</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 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>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 F0 CF 0E 00 90 2E C5 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 80 0B A7 18 BC 0E 7E A3
|
||||
0020 | F5 90 50 67 F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B
|
||||
0030 | 03 00 6E FB C2 7F 6E EF 04 53 3B AD F7 00 00 00
|
||||
0040 | 04 72 58 AF 77 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 9A DE E1 E1 70 10 55 AC 3B 88 E3 79
|
||||
0060 | 13 64 12 DB 5A 0A C4 11 CC 4F 25 21 BF ED FC 4A
|
||||
0070 | 8D 55 50 95 5B 79 B4 AB 37 85 A5 75 B4 CA 81 B4
|
||||
0080 | E2 4A 19 9B D1 BD 14 B7 41 07 C5 F1 D9 3A A1 36
|
||||
0090 | 92 22 01 8B 17 27 AD 46 9A 05 5A 2B 98 FB 1D 27
|
||||
00A0 | 19 0F AC AA 22 D3 53 91 E5 F6 C6 E5 A7 E9 93 50
|
||||
00B0 | 03 27 2F 8A 95 A8 60 8D 9A B2 BE DA 7D 47 47 0F
|
||||
00C0 | 44 1B 20 4A 9C BD B4 A8 A4 47 71 CD 6A A2 0B 15
|
||||
00D0 | 14 DB D7 56 20 DA 17 23 D3 7E 7B A1 3B AB 53 6E
|
||||
00E0 | A8 69 B1 4D 3C 36 08 F8 5E FA E5 28 25 E7 F6 EA
|
||||
00F0 | B5 6A 1B 9A ED 7E B8 2B 3B 57 DC 49 00 CF 91 C6
|
||||
0100 | 2B 59 B5 07 18 8B 5F E3 39 86 E7 E4 5C 5E B0 00
|
||||
0110 | 93 E0 06 21 44 B5 B9 FB 24 12 D8 35 DD A7 96 1D
|
||||
0120 | 41 AC 39 D2 01 C7 2D D8 A6 EE C4 7D 96 B0 12 80
|
||||
0130 | 1F 35 F6 2B 7E F6 BD DE 0E C1 24 AA B6 A2 C4 EB
|
||||
0140 | B5 A9 F6 20 7B 8B F6 2A 65 0B 8C 0C 9F 7C 51 DE
|
||||
0150 | CF 47 48 A7</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 = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>5C940A005527C565</code></td>
|
||||
<td><code>F0CF0E00902EC565</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 = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>04580CAEBD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1477226173</td>
|
||||
<td><code>04533BADF7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1396420087</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>0460C53737000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1623537463</td>
|
||||
<td><code>047258AF77000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1918414711</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 = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</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><code>FE0001009ADEE1E1701055AC3B88E379</code> <code>136412DB5A0AC411CC4F2521BFEDFC4A</code> <code>8D5550955B79B4AB3785A575B4CA81B4</code> <code>E24A199BD1BD14B74107C5F1D93AA136</code> <code>9222018B1727AD469A055A2B98FB1D27</code> <code>190FACAA22D35391E5F6C6E5A7E99350</code> <code>03272F8A95A8608D9AB2BEDA7D47470F</code> <code>441B204A9CBDB4A8A44771CD6AA20B15</code> <code>14DBD75620DA1723D37E7BA13BAB536E</code> <code>A869B14D3C3608F85EFAE52825E7F6EA</code> <code>B56A1B9AED7EB82B3B57DC4900CF91C6</code> <code>2B59B507188B5FE33986E7E45C5EB000</code> <code>93E0062144B5B9FB2412D835DDA7961D</code> <code>41AC39D201C72DD8A6EEC47D96B01280</code> <code>1F35F62B7EF6BDDE0EC124AAB6A2C4EB</code> <code>B5A9F6207B8BF62A650B8C0C9F7C51DE</code><br> <code>CF4748A7</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
|
|||
<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 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>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E0 CE D3 90 2E C5 65
|
||||
0010 | AC 02 00 00 5C 07 E8 D0 80 0B A7 18 BC 0E 7E A3
|
||||
0020 | F5 90 50 67 F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B
|
||||
0030 | 03 00 6E FB C2 7F 6E EF FE 50 02 00 D8 2B AE D9
|
||||
0040 | A0 26 FF 5D 2C 6E 90 A7 E0 CD 40 4C C9 45 B7 C8
|
||||
0050 | 71 C9 AE 29 FD 2A B0 84 B5 E5 86 6E 4E DB 50 24
|
||||
0060 | CA 86 B6 AE FB 1E 9B 9A 50 A5 D0 48 E7 19 DB 3C
|
||||
0070 | 33 61 89 A4 D3 4E E0 08 75 95 85 C3 72 77 EF C8
|
||||
0080 | 57 68 02 94 5B A7 5E 20 5B 6C CC 42 B5 91 34 F9
|
||||
0090 | 2B 4D 70 FF CE 91 22 4F C4 AB 6C AB A1 D3 DE 6F
|
||||
00A0 | A2 C8 76 77 0E 91 99 62 8B 13 88 0C 7A 7A 52 A4
|
||||
00B0 | EA 02 C9 E4 F8 1B 75 31 42 78 A1 FF A7 38 E1 3B
|
||||
00C0 | 38 34 8A 0B BB 71 72 D2 B4 1F B1 83 F2 2B A6 67
|
||||
00D0 | 54 F9 6F 06 0C 10 3E CC 8E E9 27 4D 98 D7 D9 95
|
||||
00E0 | C8 24 7E D7 F3 A5 B4 27 9E 54 19 AC 59 80 F1 38
|
||||
00F0 | 85 C2 79 58 F4 F9 D8 E2 4B EE 35 4C 89 75 AB F5
|
||||
0100 | 5C 57 48 F1 D9 39 32 FC B8 DA 03 40 77 C5 E6 D9
|
||||
0110 | 65 4A 90 3A 02 B3 73 E9 31 8A 42 EE A0 D8 2B 35
|
||||
0120 | D4 67 6B 86 9B E9 FD 19 D6 A9 AB 44 9C 9A A4 C8
|
||||
0130 | D7 B0 3D 03 82 19 D2 A1 34 2C 31 C3 69 EB 57 3F
|
||||
0140 | 4A D8 31 2C D6 E3 3F 59 ED F2 BC 3D 2D 42 C0 09
|
||||
0150 | 55 6E 0C CC FF B5 20 05 B4 CF CD C2 94 86 C0 C3
|
||||
0160 | 95 84 67 E9 02 95 60 F7 DA BE 76 D0 5A 7F 8A DC
|
||||
0170 | E5 AB C5 47 F3 99 F6 8E F6 43 EF 52 5B 1D D0 3F
|
||||
0180 | B7 BD D7 E4 EC 75 80 57 29 57 F1 96 79 88 FE BA
|
||||
0190 | C3 FC 06 C0 75 8E B8 2B D2 19 E4 F4 E1 25 34 AB
|
||||
01A0 | 50 12 BE 48 D0 0F 92 07 51 68 89 4F 3C 60 5A 76
|
||||
01B0 | 17 58 BC 8C 7E EF 5D A7 2F 8D 79 8E AE 14 8F 44
|
||||
01C0 | 85 68 C2 98 58 CB 89 93 64 34 D1 8A A0 3B CB C9
|
||||
01D0 | C9 BF 8D 86 B0 49 3F A5 8C 8D 59 47 5A 44 99 25
|
||||
01E0 | 5D C1 B2 15 C7 E2 1D CF 0D 3F 1D 6C F0 37 B9 BA
|
||||
01F0 | 80 A7 BA 97 10 E9 87 1A 32 A7 83 29 95 15 E0 38
|
||||
0200 | 03 71 66 60 85 F7 99 1F B9 B2 FA DC 90 90 D4 9B
|
||||
0210 | 4C 1B 85 E5 B1 8A 72 21 83 85 C8 B5 C0 8F 4F F7
|
||||
0220 | F3 E1 1E B4 08 60 53 2B F4 E5 D5 CB A2 11 30 46
|
||||
0230 | 39 93 14 CA 83 ED 6F 04 2B 22 08 ED C2 48 0D F3
|
||||
0240 | 0D CE E0 8F 6A F8 AA CD 15 62 5B C8 4B 32 A2 96
|
||||
0250 | E4 77 16 7F BE 95 F0 56 0C ED 82 C8 16 C5 AE B4
|
||||
0260 | 65 1B AF D0 C7 B4 1A B3 9F F3 6F 9D 94 A3 5C DD
|
||||
0270 | F0 5D C1 35 77 69 C4 E6 A6 19 89 83 58 38 22 FB
|
||||
0280 | CF A1 F5 0D 2B BB 74 C2 ED CD 75 EE</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 = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01DCB1C75527C565</code></td>
|
||||
<td><code>01E0CED3902EC565</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>C4020000</code> (708 in decimal)</td>
|
||||
<td><code>AC020000</code> (684 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</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><code>FE500200D82BAED9A026FF5D2C6E90A7</code> <code>E0CD404CC945B7C871C9AE29FD2AB084</code> <code>B5E5866E4EDB5024CA86B6AEFB1E9B9A</code> <code>50A5D048E719DB3C336189A4D34EE008</code> <code>759585C37277EFC8576802945BA75E20</code> <code>5B6CCC42B59134F92B4D70FFCE91224F</code> <code>C4AB6CABA1D3DE6FA2C876770E919962</code> <code>8B13880C7A7A52A4EA02C9E4F81B7531</code> <code>4278A1FFA738E13B38348A0BBB7172D2</code> <code>B41FB183F22BA66754F96F060C103ECC</code> <code>8EE9274D98D7D995C8247ED7F3A5B427</code> <code>9E5419AC5980F13885C27958F4F9D8E2</code> <code>4BEE354C8975ABF55C5748F1D93932FC</code> <code>B8DA034077C5E6D9654A903A02B373E9</code> <code>318A42EEA0D82B35D4676B869BE9FD19</code> <code>D6A9AB449C9AA4C8D7B03D038219D2A1</code> <code>342C31C369EB573F4AD8312CD6E33F59</code> <code>EDF2BC3D2D42C009556E0CCCFFB52005</code> <code>B4CFCDC29486C0C3958467E9029560F7</code> <code>DABE76D05A7F8ADCE5ABC547F399F68E</code> <code>F643EF525B1DD03FB7BDD7E4EC758057</code> <code>2957F1967988FEBAC3FC06C0758EB82B</code> <code>D219E4F4E12534AB5012BE48D00F9207</code> <code>5168894F3C605A761758BC8C7EEF5DA7</code> <code>2F8D798EAE148F448568C29858CB8993</code> <code>6434D18AA03BCBC9C9BF8D86B0493FA5</code> <code>8C8D59475A4499255DC1B215C7E21DCF</code> <code>0D3F1D6CF037B9BA80A7BA9710E9871A</code> <code>32A783299515E0380371666085F7991F</code> <code>B9B2FADC9090D49B4C1B85E5B18A7221</code> <code>8385C8B5C08F4FF7F3E11EB40860532B</code> <code>F4E5D5CBA2113046399314CA83ED6F04</code> <code>2B2208EDC2480DF30DCEE08F6AF8AACD</code> <code>15625BC84B32A296E477167FBE95F056</code> <code>0CED82C816C5AEB4651BAFD0C7B41AB3</code> <code>9FF36F9D94A35CDDF05DC1357769C4E6</code> <code>A6198983583822FBCFA1F50D2BBB74C2</code><br> <code>EDCD75EE</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = AD900D28BB11371AD8D5964B4E0617B716AA647373F937E91315C6E0C
|
|||
<!-- 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 = E671FEFBB4B2A99FB2D7196D1FFEB469789E2B34A0CCF23A20F442C67C8E9C0F88E0AB61AA53168D3DB9CE492D4F23F35A8762B3479309AADCF916AC20AE34F65826DC16EE0A0218729C22A686F84D1814336658A8B87616ED856CC8C6B283F49068CE5A943540C969BA6D74CD15E478EC4C9E1A5672A06500C09B19FACD08749085DCC095902047E86A8F9046D620423F5FF8ED038E1CE3A4BC2036BB79C0528E950F4558ED19C0A62D450C41E9A3248593DECE4888DA2B44F9EB938E29FDDD956083C5346D30D58B56EE95526D7B6B83E59BA43F5DFBEFAE6C34A838944BCD6DA248646891220108CA36C77E894A6A6A6953857FA41DDE73DE9B566B328CC9F826374B489C22D50C178A2CA480809AF07CFE0881A4CE4269191EB6341FCFBBF50BCB57E2EFE0A334846FAF1EECB381FBBD1EF66C5E2CF5B71F35E40F3C788BE3584CD10F8715CA7C849FE7427B50F67D1D90FBBF964B2A473E2A861BC7DA354C7D466C4570C0DA5946DF6703F2D5D1DE1799A2AF3D4E0684854609BBE9C607E7CFA14BD9DE9960DD077C3A4349167301754C724B772364FDA97131DA1C229A5243176B9C4F885D2BDDA9059BBD1830709E6463BEF62ACAC28BE7D94F7A0D77F4BA821A75EC87CAD6A70A83BA1162F6718BC441E3C242032F918204B66C6E95DE38835C88E01CA45338FE6BD36E6D4E94D98923CA85EA694A342D6E913B95D6BE40D7B500028DD4B0B8714D8169E4F0FA40B7B3BE861A827387BAA1FCB1BF9E72F26DEB559286ACCE0A65607020283D91BE22C125E5B58AD1EAE034A7EB89666CEA8C0B0C51E1F59EA2557FDD56E881
|
||||
tmp_aes_key = B64E760C2EA83BA9EDA2DA7E5826A518B6D82CE469DE416A140B25AACB7AA41B
|
||||
tmp_aes_iv = 279F8786E2A347AF1284D523F2EF9589DE890EEE25235638E1CA610A13BC04D0</code></pre>
|
||||
<pre><code>encrypted_answer = D82BAED9A026FF5D2C6E90A7E0CD404CC945B7C871C9AE29FD2AB084B5E5866E4EDB5024CA86B6AEFB1E9B9A50A5D048E719DB3C336189A4D34EE008759585C37277EFC8576802945BA75E205B6CCC42B59134F92B4D70FFCE91224FC4AB6CABA1D3DE6FA2C876770E9199628B13880C7A7A52A4EA02C9E4F81B75314278A1FFA738E13B38348A0BBB7172D2B41FB183F22BA66754F96F060C103ECC8EE9274D98D7D995C8247ED7F3A5B4279E5419AC5980F13885C27958F4F9D8E24BEE354C8975ABF55C5748F1D93932FCB8DA034077C5E6D9654A903A02B373E9318A42EEA0D82B35D4676B869BE9FD19D6A9AB449C9AA4C8D7B03D038219D2A1342C31C369EB573F4AD8312CD6E33F59EDF2BC3D2D42C009556E0CCCFFB52005B4CFCDC29486C0C3958467E9029560F7DABE76D05A7F8ADCE5ABC547F399F68EF643EF525B1DD03FB7BDD7E4EC7580572957F1967988FEBAC3FC06C0758EB82BD219E4F4E12534AB5012BE48D00F92075168894F3C605A761758BC8C7EEF5DA72F8D798EAE148F448568C29858CB89936434D18AA03BCBC9C9BF8D86B0493FA58C8D59475A4499255DC1B215C7E21DCF0D3F1D6CF037B9BA80A7BA9710E9871A32A783299515E0380371666085F7991FB9B2FADC9090D49B4C1B85E5B18A72218385C8B5C08F4FF7F3E11EB40860532BF4E5D5CBA2113046399314CA83ED6F042B2208EDC2480DF30DCEE08F6AF8AACD15625BC84B32A296E477167FBE95F0560CED82C816C5AEB4651BAFD0C7B41AB39FF36F9D94A35CDDF05DC1357769C4E6A6198983583822FBCFA1F50D2BBB74C2EDCD75EE
|
||||
tmp_aes_key = 1694A711A6114B6BBABB94EE9CD3EE5351BD3878EBB313CE8AC4738062E9AD92
|
||||
tmp_aes_iv = BED33E660AAB7A16C00377B33A6054E28E405B895CA9CF3DE96DDAA610CA08B0</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = EB47937161D3E7E6E038995C4465F21BBB695AC2BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073BE87B3EDC77461298DDECD1B9F9E37301A903111767C4B27BC97A6BF6EACD991CA46BBCA1BB63DF693D128C5D1B7142BA62ECA5C6C404AC30D1748E4341C92BD3258729A702D255A12381BB95DC13909505F9664EC2EF58366D00618258549B148955C05081C722D4B4DCA51E1B24E840BB2F09928C85B446058C7C810A4E650CCF0A1F61B6FF562FB2C7B902DDAEC000FB28D9703CB45F6FB143C896B6E17FBBEA9817A74259615BD8D884714659EA06B85FD9FF96CB14B4846FF46451D088AFDDCACD60C0C90741E9708FF664361E6B81E62E6AA95A4BCDF4E7C4AE9722112E3684937BBDEA97289012BFA0B4092F5F3D9E65447B00FA549A8F171C35B875527C565360299833531B6A5
|
||||
answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010073BE87B3EDC77461298DDECD1B9F9E37301A903111767C4B27BC97A6BF6EACD991CA46BBCA1BB63DF693D128C5D1B7142BA62ECA5C6C404AC30D1748E4341C92BD3258729A702D255A12381BB95DC13909505F9664EC2EF58366D00618258549B148955C05081C722D4B4DCA51E1B24E840BB2F09928C85B446058C7C810A4E650CCF0A1F61B6FF562FB2C7B902DDAEC000FB28D9703CB45F6FB143C896B6E17FBBEA9817A74259615BD8D884714659EA06B85FD9FF96CB14B4846FF46451D088AFDDCACD60C0C90741E9708FF664361E6B81E62E6AA95A4BCDF4E7C4AE9722112E3684937BBDEA97289012BFA0B4092F5F3D9E65447B00FA549A8F171C35B875527C565360299833531B6A5</code></pre>
|
||||
<pre><code>answer_with_hash = 9F9876C0901CCD5F876B90AF170A0537BA6A9029BA0D89B5800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F300A42E28D0930B74A8EDC8EA47CEF91005DAC0EB568814CAE16890572EB063E7D5C0D0E22F5F8B70744FC091806B34374F130E56FE4C5B79CB038124E6612460CAD9E4D66F2061FD8EBB051CCEAE3E5E8C4D908E043B09C8ED2ED2AE60C7BEE2420F093B9FA8598C9C7DF765F04E9A628678A9D1932B2CECE9D5DA091CFB603BC45F31083C495B2169BC4CC2B67FEB2EAE6A2F6F8FD7EBFD1BAF3A7C12F8828C35C84641311F0A80A3244AC443F9EF80684F5C21F216AD2738D0E2AED09E6680A0E879AEA037B66D265037260CFBF7BB5B0F3BA8A40DC396AC4874B33B0A9160D19FECECE8060566B4CA5BC252DEF14637B12C998C696954667C419F1D2BA902EC565005886AFC04B2171
|
||||
answer = BA0D89B5800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001007F300A42E28D0930B74A8EDC8EA47CEF91005DAC0EB568814CAE16890572EB063E7D5C0D0E22F5F8B70744FC091806B34374F130E56FE4C5B79CB038124E6612460CAD9E4D66F2061FD8EBB051CCEAE3E5E8C4D908E043B09C8ED2ED2AE60C7BEE2420F093B9FA8598C9C7DF765F04E9A628678A9D1932B2CECE9D5DA091CFB603BC45F31083C495B2169BC4CC2B67FEB2EAE6A2F6F8FD7EBFD1BAF3A7C12F8828C35C84641311F0A80A3244AC443F9EF80684F5C21F216AD2738D0E2AED09E6680A0E879AEA037B66D265037260CFBF7BB5B0F3BA8A40DC396AC4874B33B0A9160D19FECECE8060566B4CA5BC252DEF14637B12C998C696954667C419F1D2BA902EC565005886AFC04B2171</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 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
|
||||
<pre><code>0000 | BA 0D 89 B5 80 0B A7 18 BC 0E 7E A3 F5 90 50 67
|
||||
0010 | F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B 03 00 6E FB
|
||||
0020 | C2 7F 6E EF 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 = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
|
|||
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 | 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>
|
||||
0130 | 7F 30 0A 42 E2 8D 09 30 B7 4A 8E DC 8E A4 7C EF
|
||||
0140 | 91 00 5D AC 0E B5 68 81 4C AE 16 89 05 72 EB 06
|
||||
0150 | 3E 7D 5C 0D 0E 22 F5 F8 B7 07 44 FC 09 18 06 B3
|
||||
0160 | 43 74 F1 30 E5 6F E4 C5 B7 9C B0 38 12 4E 66 12
|
||||
0170 | 46 0C AD 9E 4D 66 F2 06 1F D8 EB B0 51 CC EA E3
|
||||
0180 | E5 E8 C4 D9 08 E0 43 B0 9C 8E D2 ED 2A E6 0C 7B
|
||||
0190 | EE 24 20 F0 93 B9 FA 85 98 C9 C7 DF 76 5F 04 E9
|
||||
01A0 | A6 28 67 8A 9D 19 32 B2 CE CE 9D 5D A0 91 CF B6
|
||||
01B0 | 03 BC 45 F3 10 83 C4 95 B2 16 9B C4 CC 2B 67 FE
|
||||
01C0 | B2 EA E6 A2 F6 F8 FD 7E BF D1 BA F3 A7 C1 2F 88
|
||||
01D0 | 28 C3 5C 84 64 13 11 F0 A8 0A 32 44 AC 44 3F 9E
|
||||
01E0 | F8 06 84 F5 C2 1F 21 6A D2 73 8D 0E 2A ED 09 E6
|
||||
01F0 | 68 0A 0E 87 9A EA 03 7B 66 D2 65 03 72 60 CF BF
|
||||
0200 | 7B B5 B0 F3 BA 8A 40 DC 39 6A C4 87 4B 33 B0 A9
|
||||
0210 | 16 0D 19 FE CE CE 80 60 56 6B 4C A5 BC 25 2D EF
|
||||
0220 | 14 63 7B 12 C9 98 C6 96 95 46 67 C4 19 F1 D2 BA
|
||||
0230 | 90 2E 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 = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</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>FE0001007F300A42E28D0930B74A8EDC</code> <code>8EA47CEF91005DAC0EB568814CAE1689</code> <code>0572EB063E7D5C0D0E22F5F8B70744FC</code> <code>091806B34374F130E56FE4C5B79CB038</code> <code>124E6612460CAD9E4D66F2061FD8EBB0</code> <code>51CCEAE3E5E8C4D908E043B09C8ED2ED</code> <code>2AE60C7BEE2420F093B9FA8598C9C7DF</code> <code>765F04E9A628678A9D1932B2CECE9D5D</code> <code>A091CFB603BC45F31083C495B2169BC4</code> <code>CC2B67FEB2EAE6A2F6F8FD7EBFD1BAF3</code> <code>A7C12F8828C35C84641311F0A80A3244</code> <code>AC443F9EF80684F5C21F216AD2738D0E</code> <code>2AED09E6680A0E879AEA037B66D26503</code> <code>7260CFBF7BB5B0F3BA8A40DC396AC487</code> <code>4B33B0A9160D19FECECE8060566B4CA5</code> <code>BC252DEF14637B12C998C696954667C4</code><br> <code>19F1D2BA</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>5527C565</code> (1707419477 in decimal)</td>
|
||||
<td><code>902EC565</code> (1707421328 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
|
|||
<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 = F9D5F8A3A43686CC4EC12727388730C47ACDB2ABC2AC2CA25BD5DDA1389FE47B7BBA499BF3C396BDBF6923FE590E9772073C8C6406C29FCFEA1AD41513C26348DF2DC03042CB44426670E2C0D6494C9B26413BF021BC3AC29BA44B78B5EF5EE7EB07FBB5A6D4663F49DF4CA3B73380322B4A8C27CAAD2ED81C0D06217428C3EB57C2D96DA00C6C8E851A1DF03237276F4FE8147359205A7AF7EFAB0E251DCE371D8E44F124AF6E672C78F7F8753D7FB335FE0B299C7432173DB85FF1DBAB1D2C24B78EF3C8AA400923211673D56C0F398CCCDCB2EA36D5FE38E7D3B64A3D160EF7B0FF682E7A9D49FCBFFEE5C21343B940285FE77E8DE18C6A8706132FA432C7</code></pre>
|
||||
<pre><code>b = 2EC303EC47EBF359A8EF58553C5765B4350F0DB8BD1E88289C840D3921DC5DB3E583843026A862DFF6BABBD4128D5425355B2098CEBE676E45752DF24B80ACB39D66C214B318F8CE58DA27812278657B0FC3DA942DCDA52D2FDB5884C36FFB4540BF39EE43CA92F6F1921B152E0669BE3A955A03682E0BFDF1D5B209864FEDB2250B946C3F5D252E5E9905422944B5292A46F6E6CDA543981C2B608EAB1BA17104352972CA57866D285FE6C2660E416977913CDF28D3EC17BCE02F17052DDAADD5710F624C8A0E6790F4C97A245A6584C87DE00F4E9673DE92E406A61D247C5E8BB615A59F91EA73D28DCC95D235CC6CA412CA3E185116ED6CF963D2C15C23EB</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 = 40D09EB7C6A7B0717B564A74A7C11B3E34809E3124C099892293A21DC0B576A417DAF6BE9DB6D8BFFD959AA40E4D60AD66134A3FAF69B815ED71A8E7E84BD405FBAE96B69DE961538959526FD77AA534E1F6B10916D6D112A38D330C2937333D82B5FDF97B5A7FF3E56AA51E507A0614FE379929BF90A02860AD82E48CE48E2C8A3B7FD853B6AB9EBEE5CEDD1EFC7BADBD3B05704CC2DD7FF3130B0FA7F4DA041DD6C7EBC8C2FDFBBBF03181A306966469226F361EE479C5F9DB8082A00598AB42DBC45397AEF1DD7EDEDBC8D5B6A6F85F995DA60B55014CD26BA9B033C46118608097D50470EB69E171D276429BB6D53F4A13FF717EB9E23EA8D51C76698368</code></pre>
|
||||
<pre><code>g_b = 392EFB02FF06BE541AE2836DE1C443530B1CCE635FF07D9817B3532644A0CF3C5F4BD8F8C53F40E00AFEE41D1C478F7A7ACDAAE1601E52C42C86436A816F3AB39DACDB60AF51E04A7E9C36DD8EF081FA2E6DFBCD2FB24C312B02A45413C5D18A7E1D1B6C16FFB582D1C1D538946C8269ED1AE18A5FCFBAE4FCE2D4835D80ACC6400153CE43C54F3A9ABAB65F048E8661476AB2C4FAD76BE6B46B407A5419F92A19431D09BB2265A3135DC7F41BF18D88502997A1AD3E96ED533BBB409A9D3A51AE17FA2B7BFC81657851BCC4E73608FBFDF682D08893468FDC6D1247D2B5EAFD91A80D96B399E2B657144A8C41FCBF0A9FF8114E243EBA9D15325C1DEE3297E5</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 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>
|
||||
<pre><code>0000 | 54 B6 43 66 80 0B A7 18 BC 0E 7E A3 F5 90 50 67
|
||||
0010 | F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B 03 00 6E FB
|
||||
0020 | C2 7F 6E EF 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 39 2E FB 02 FF 06 BE 54 1A E2 83 6D E1 C4 43 53
|
||||
0040 | 0B 1C CE 63 5F F0 7D 98 17 B3 53 26 44 A0 CF 3C
|
||||
0050 | 5F 4B D8 F8 C5 3F 40 E0 0A FE E4 1D 1C 47 8F 7A
|
||||
0060 | 7A CD AA E1 60 1E 52 C4 2C 86 43 6A 81 6F 3A B3
|
||||
0070 | 9D AC DB 60 AF 51 E0 4A 7E 9C 36 DD 8E F0 81 FA
|
||||
0080 | 2E 6D FB CD 2F B2 4C 31 2B 02 A4 54 13 C5 D1 8A
|
||||
0090 | 7E 1D 1B 6C 16 FF B5 82 D1 C1 D5 38 94 6C 82 69
|
||||
00A0 | ED 1A E1 8A 5F CF BA E4 FC E2 D4 83 5D 80 AC C6
|
||||
00B0 | 40 01 53 CE 43 C5 4F 3A 9A BA B6 5F 04 8E 86 61
|
||||
00C0 | 47 6A B2 C4 FA D7 6B E6 B4 6B 40 7A 54 19 F9 2A
|
||||
00D0 | 19 43 1D 09 BB 22 65 A3 13 5D C7 F4 1B F1 8D 88
|
||||
00E0 | 50 29 97 A1 AD 3E 96 ED 53 3B BB 40 9A 9D 3A 51
|
||||
00F0 | AE 17 FA 2B 7B FC 81 65 78 51 BC C4 E7 36 08 FB
|
||||
0100 | FD F6 82 D0 88 93 46 8F DC 6D 12 47 D2 B5 EA FD
|
||||
0110 | 91 A8 0D 96 B3 99 E2 B6 57 14 4A 8C 41 FC BF 0A
|
||||
0120 | 9F F8 11 4E 24 3E BA 9D 15 32 5C 1D EE 32 97 E5</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 = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</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><code>FE000100392EFB02FF06BE541AE2836D</code> <code>E1C443530B1CCE635FF07D9817B35326</code> <code>44A0CF3C5F4BD8F8C53F40E00AFEE41D</code> <code>1C478F7A7ACDAAE1601E52C42C86436A</code> <code>816F3AB39DACDB60AF51E04A7E9C36DD</code> <code>8EF081FA2E6DFBCD2FB24C312B02A454</code> <code>13C5D18A7E1D1B6C16FFB582D1C1D538</code> <code>946C8269ED1AE18A5FCFBAE4FCE2D483</code> <code>5D80ACC6400153CE43C54F3A9ABAB65F</code> <code>048E8661476AB2C4FAD76BE6B46B407A</code> <code>5419F92A19431D09BB2265A3135DC7F4</code> <code>1BF18D88502997A1AD3E96ED533BBB40</code> <code>9A9D3A51AE17FA2B7BFC81657851BCC4</code> <code>E73608FBFDF682D08893468FDC6D1247</code> <code>D2B5EAFD91A80D96B399E2B657144A8C</code> <code>41FCBF0A9FF8114E243EBA9D15325C1D</code><br> <code>EE3297E5</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 = BA0D89B585D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35
|
|||
<!-- 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 = 54B6436685D5BF80B189FC0CA6C37EAB8279C73063D248C5E09A636096C3543C7616A35E0000000000000000FE00010040D09EB7C6A7B0717B564A74A7C11B3E34809E3124C099892293A21DC0B576A417DAF6BE9DB6D8BFFD959AA40E4D60AD66134A3FAF69B815ED71A8E7E84BD405FBAE96B69DE961538959526FD77AA534E1F6B10916D6D112A38D330C2937333D82B5FDF97B5A7FF3E56AA51E507A0614FE379929BF90A02860AD82E48CE48E2C8A3B7FD853B6AB9EBEE5CEDD1EFC7BADBD3B05704CC2DD7FF3130B0FA7F4DA041DD6C7EBC8C2FDFBBBF03181A306966469226F361EE479C5F9DB8082A00598AB42DBC45397AEF1DD7EDEDBC8D5B6A6F85F995DA60B55014CD26BA9B033C46118608097D50470EB69E171D276429BB6D53F4A13FF717EB9E23EA8D51C76698368
|
||||
padding = 270D8CE8A3AB22A8D43AE249
|
||||
tmp_aes_key = B64E760C2EA83BA9EDA2DA7E5826A518B6D82CE469DE416A140B25AACB7AA41B
|
||||
tmp_aes_iv = 279F8786E2A347AF1284D523F2EF9589DE890EEE25235638E1CA610A13BC04D0</code></pre>
|
||||
<pre><code>data = 54B64366800BA718BC0E7EA3F5905067F72A9564D6A3856C3E35034B03006EFBC27F6EEF0000000000000000FE000100392EFB02FF06BE541AE2836DE1C443530B1CCE635FF07D9817B3532644A0CF3C5F4BD8F8C53F40E00AFEE41D1C478F7A7ACDAAE1601E52C42C86436A816F3AB39DACDB60AF51E04A7E9C36DD8EF081FA2E6DFBCD2FB24C312B02A45413C5D18A7E1D1B6C16FFB582D1C1D538946C8269ED1AE18A5FCFBAE4FCE2D4835D80ACC6400153CE43C54F3A9ABAB65F048E8661476AB2C4FAD76BE6B46B407A5419F92A19431D09BB2265A3135DC7F41BF18D88502997A1AD3E96ED533BBB409A9D3A51AE17FA2B7BFC81657851BCC4E73608FBFDF682D08893468FDC6D1247D2B5EAFD91A80D96B399E2B657144A8C41FCBF0A9FF8114E243EBA9D15325C1DEE3297E5
|
||||
padding = 8B75401CCCD9C0690F4B6A62
|
||||
tmp_aes_key = 1694A711A6114B6BBABB94EE9CD3EE5351BD3878EBB313CE8AC4738062E9AD92
|
||||
tmp_aes_iv = BED33E660AAB7A16C00377B33A6054E28E405B895CA9CF3DE96DDAA610CA08B0</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 = 1DF0B6D5DD8EFD79F454B18724ABFB5A3049139671D8846A810CDF1017DF9D019DB7B20A81D5EF4BFCCE20F97E938B5AEAB818056130F15EE5D738DDFB840781F7894074CB2F5B58700D0D0AD71B5BD9969C67CE8D4EF9C096E8CD0266C27CEAE681AB2F65DFF2AF2981C1E12111EA17A2265444A6B741826E4BE2A0B49388D82E4C1A5ACCC0D05404835EA72328EBF835752A577408D21382999D1FD09998A20F9784719EDF55729EC4F2376A013A13BA38E823A239378117E7E2525574F87891BA4DD7B33465CE4EFCCFF3643365E0FA353AFFC3F50F2E00F947AF5340B1EC37A2C5310CEB44C0DB5572CEF26BD3F0C297FCDB37495F0D7C27382AA941856D32EFC7BE7F1E833740761B0382BAE8649E054A0068877D349C4C02F20458D7E3C2D5E887855684C85A8430F848090F1E0D44FC58E594A1406648063903CDB63551A7F554C95B9B249F837E1D9EDB063E</code></pre>
|
||||
<pre><code>encrypted_data = E57862B64D90687CBB358497FB42F308A5D004CBD9295103399DB4696CD5E6DBDF33284F40DEBAD95C7DD617FABD0C32BD7AA1F4D449CD3E4B2E8E89D652ACF81E112D881895DB37D5ECB74947A35C01DBCB77FB64A6790609FB752222D31179DC00A86308CD2AC55BC9695CA162039BA9D385A018063E6A70463F1B93DA6A8A06022ECF2395A763F909E86D921E40679300565703022F9E0FFEE1A5CE7D2EFC4E4562B734E6C22E8B16DF2C069BB6EA1BFD32DC93B9B15AB56A7B6026CF90653FEFA6720188CFD1F3F260EE2368997E237C406CFD06DD092C362A3D894D6DA33FCBFD60DAD3B6F2786869A89818553D48D6774588E3F1757363818165BE1E4A0FF1D2464D1A888D816916545D085951A540C8C50B61A7E7348728ED0DEA79EEF367E362D2A7DDB961F85B4A12424115BC394D8E3BC7E8B2AA3349D9C4AD2280823A1A3FE26D34548370865DC5B1497B</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 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>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 F4 CF 0E 00 90 2E C5 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 80 0B A7 18 BC 0E 7E A3
|
||||
0020 | F5 90 50 67 F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B
|
||||
0030 | 03 00 6E FB C2 7F 6E EF FE 50 01 00 E5 78 62 B6
|
||||
0040 | 4D 90 68 7C BB 35 84 97 FB 42 F3 08 A5 D0 04 CB
|
||||
0050 | D9 29 51 03 39 9D B4 69 6C D5 E6 DB DF 33 28 4F
|
||||
0060 | 40 DE BA D9 5C 7D D6 17 FA BD 0C 32 BD 7A A1 F4
|
||||
0070 | D4 49 CD 3E 4B 2E 8E 89 D6 52 AC F8 1E 11 2D 88
|
||||
0080 | 18 95 DB 37 D5 EC B7 49 47 A3 5C 01 DB CB 77 FB
|
||||
0090 | 64 A6 79 06 09 FB 75 22 22 D3 11 79 DC 00 A8 63
|
||||
00A0 | 08 CD 2A C5 5B C9 69 5C A1 62 03 9B A9 D3 85 A0
|
||||
00B0 | 18 06 3E 6A 70 46 3F 1B 93 DA 6A 8A 06 02 2E CF
|
||||
00C0 | 23 95 A7 63 F9 09 E8 6D 92 1E 40 67 93 00 56 57
|
||||
00D0 | 03 02 2F 9E 0F FE E1 A5 CE 7D 2E FC 4E 45 62 B7
|
||||
00E0 | 34 E6 C2 2E 8B 16 DF 2C 06 9B B6 EA 1B FD 32 DC
|
||||
00F0 | 93 B9 B1 5A B5 6A 7B 60 26 CF 90 65 3F EF A6 72
|
||||
0100 | 01 88 CF D1 F3 F2 60 EE 23 68 99 7E 23 7C 40 6C
|
||||
0110 | FD 06 DD 09 2C 36 2A 3D 89 4D 6D A3 3F CB FD 60
|
||||
0120 | DA D3 B6 F2 78 68 69 A8 98 18 55 3D 48 D6 77 45
|
||||
0130 | 88 E3 F1 75 73 63 81 81 65 BE 1E 4A 0F F1 D2 46
|
||||
0140 | 4D 1A 88 8D 81 69 16 54 5D 08 59 51 A5 40 C8 C5
|
||||
0150 | 0B 61 A7 E7 34 87 28 ED 0D EA 79 EE F3 67 E3 62
|
||||
0160 | D2 A7 DD B9 61 F8 5B 4A 12 42 41 15 BC 39 4D 8E
|
||||
0170 | 3B C7 E8 B2 AA 33 49 D9 C4 AD 22 80 82 3A 1A 3F
|
||||
0180 | E2 6D 34 54 83 70 86 5D C5 B1 49 7B</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>5CCE05005627C565</code></td>
|
||||
<td><code>F4CF0E00902EC565</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>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</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><code>FE500100E57862B64D90687CBB358497</code> <code>FB42F308A5D004CBD9295103399DB469</code> <code>6CD5E6DBDF33284F40DEBAD95C7DD617</code> <code>FABD0C32BD7AA1F4D449CD3E4B2E8E89</code> <code>D652ACF81E112D881895DB37D5ECB749</code> <code>47A35C01DBCB77FB64A6790609FB7522</code> <code>22D31179DC00A86308CD2AC55BC9695C</code> <code>A162039BA9D385A018063E6A70463F1B</code> <code>93DA6A8A06022ECF2395A763F909E86D</code> <code>921E40679300565703022F9E0FFEE1A5</code> <code>CE7D2EFC4E4562B734E6C22E8B16DF2C</code> <code>069BB6EA1BFD32DC93B9B15AB56A7B60</code> <code>26CF90653FEFA6720188CFD1F3F260EE</code> <code>2368997E237C406CFD06DD092C362A3D</code> <code>894D6DA33FCBFD60DAD3B6F2786869A8</code> <code>9818553D48D6774588E3F17573638181</code> <code>65BE1E4A0FF1D2464D1A888D81691654</code> <code>5D085951A540C8C50B61A7E7348728ED</code> <code>0DEA79EEF367E362D2A7DDB961F85B4A</code> <code>12424115BC394D8E3BC7E8B2AA3349D9</code> <code>C4AD2280823A1A3FE26D34548370865D</code><br> <code>C5B1497B</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 = 6C63D6ACD86A700AD3C5F6598145E3955FC4E97BC706864E9AC845A67D81103671042ABB23DA9F375F1C4EEE3A924C22EBF4E08A5408036314274BEE204F5D31342F20C1FFF66A041ACA36BDFBCAEBBD7B49D7459D50D02D4142FF7E741ED121B63DF86C38C8F7D0CAECA186C4A5E87A60F61A28B077F1E6888E511AE5E718A1F981469273D84DD394FCFA8A431A5B87890E5684F862A158BCB9BCD1C8EC13A77969CC8E7F7A2B0EDA41890F3AC91FCF2BD7E88A1703F35A295563D9AE3D6B7B741B1D0638DB84C88B6ACB0B5908518868CE83018A693B6306CC1BF61E5D2E0BB2815AD733745624EC1F935E09A160542A5052C0AE10FD98477C82A8EEFA41C8</code></pre>
|
||||
<pre><code>auth_key = 9AE6221027C2C63E4D6BBD1177C871115C9987F930120E68EE84E0DAD8FB56C13F5B0A8F2C60B534C9B3B3C67F75575EB40C6A5376AE4C234C4EFA71418CE1B2274C517321EEB5C78ED585B905C14ED119E3D5A3CF34F01F46078C4DB59227FE8E57D432AB20C830FE457EBA0412CBDAC0A5E665A77DC1244DFE2C0170B39446A1E9397F167305863CE52196F700FA0DE185C642D0CDB866EFA132C29025DB627BE5CCA9A1923A781E4F808CB3B7667505BDFF5D52DDB32623D03ABEE9BF849FDD94D34472EC3DF256711754CECF5F5EDD98D9321F3E5A39BC56119563B275A404B4E82EBE670AE52F0A092C9CFD72664263E938AF03DD1CC42F4A44A8A34400</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 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>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 94 68 83 91 2E C5 65
|
||||
0010 | 94 00 00 00 34 F7 CB 3B 80 0B A7 18 BC 0E 7E A3
|
||||
0020 | F5 90 50 67 F7 2A 95 64 D6 A3 85 6C 3E 35 03 4B
|
||||
0030 | 03 00 6E FB C2 7F 6E EF 43 29 74 8B 0C 4D F3 30
|
||||
0040 | C6 05 E9 BF A2 14 2E A6</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>01B4FB705727C565</code></td>
|
||||
<td><code>01946883912EC565</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>6C000000</code> (108 in decimal)</td>
|
||||
<td><code>94000000</code> (148 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>85D5BF80B189FC0CA6C37EAB8279C730</code></td>
|
||||
<td><code>800BA718BC0E7EA3F5905067F72A9564</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>63D248C5E09A636096C3543C7616A35E</code></td>
|
||||
<td><code>D6A3856C3E35034B03006EFBC27F6EEF</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>864CA9378A437E2DF7B1F307C8489B29</code></td>
|
||||
<td><code>4329748B0C4DF330C605E9BFA2142EA6</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…
Reference in a new issue