|
|
|
@ -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 F8 87 0A 00 B1 3F A1 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 50 04 22 80 E4 B6 7C 30
|
|
|
|
|
0020 | 77 D4 A0 C1 2D 4D 1E C1</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 58 30 0C 00 7A 43 A1 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 66 CD 10 76 62 1B 9E 73
|
|
|
|
|
0020 | E9 F5 D2 63 5F 0C 1A 01</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>F8870A00B13FA166</code></td>
|
|
|
|
|
<td><code>58300C007A43A166</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>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</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 E8 2E 9C B1 3F A1 66
|
|
|
|
|
0010 | C0 00 00 00 63 24 16 05 50 04 22 80 E4 B6 7C 30
|
|
|
|
|
0020 | 77 D4 A0 C1 2D 4D 1E C1 F2 E4 63 9D 99 B8 10 5C
|
|
|
|
|
0030 | A2 0D 76 A0 5F D1 1F 84 08 11 82 5D 68 B2 4C 41
|
|
|
|
|
0040 | EF 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 7C 25 D6 7A 43 A1 66
|
|
|
|
|
0010 | A0 00 00 00 63 24 16 05 66 CD 10 76 62 1B 9E 73
|
|
|
|
|
0020 | E9 F5 D2 63 5F 0C 1A 01 26 AF A9 7C 5F D7 7F F1
|
|
|
|
|
0030 | E0 39 D1 40 00 ED 24 1D 08 18 E5 21 66 98 54 81
|
|
|
|
|
0040 | 05 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>01E82E9CB13FA166</code></td>
|
|
|
|
|
<td><code>017C25D67A43A166</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>C0000000</code> (192 in decimal)</td>
|
|
|
|
|
<td><code>A0000000</code> (160 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>0811825D68B24C41EF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1261673549866484207</td>
|
|
|
|
|
<td><code>0818E5216698548105000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1793876751103066373</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 = 1261673549866484207</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1261673549866484207 = 1016741911 * 1240898537</code></p>
|
|
|
|
|
<pre><code>p = 1016741911
|
|
|
|
|
q = 1240898537</code></pre>
|
|
|
|
|
<pre><code>pq = 1793876751103066373</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1793876751103066373 = 1128986147 * 1588927159</code></p>
|
|
|
|
|
<pre><code>p = 1128986147
|
|
|
|
|
q = 1588927159</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 11 82 5D 68 B2 4C 41 EF 00 00 00
|
|
|
|
|
0010 | 04 3C 9A 40 17 00 00 00 04 49 F6 9B E9 00 00 00
|
|
|
|
|
0020 | 50 04 22 80 E4 B6 7C 30 77 D4 A0 C1 2D 4D 1E C1
|
|
|
|
|
0030 | F2 E4 63 9D 99 B8 10 5C A2 0D 76 A0 5F D1 1F 84
|
|
|
|
|
0040 | 3C 0C 10 14 DB E5 F8 D7 43 34 E9 60 36 75 C3 FA
|
|
|
|
|
0050 | C4 FA A7 96 C2 FC A6 45 F5 C4 C3 9F 90 50 49 7C
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 18 E5 21 66 98 54 81 05 00 00 00
|
|
|
|
|
0010 | 04 43 4A F6 23 00 00 00 04 5E B5 1A B7 00 00 00
|
|
|
|
|
0020 | 66 CD 10 76 62 1B 9E 73 E9 F5 D2 63 5F 0C 1A 01
|
|
|
|
|
0030 | 26 AF A9 7C 5F D7 7F F1 E0 39 D1 40 00 ED 24 1D
|
|
|
|
|
0040 | 9A 87 9B 42 20 45 9F 61 DA D0 C6 96 12 A4 7A 3E
|
|
|
|
|
0050 | C0 07 6A B1 6E 06 36 4C 70 0D 14 53 3A 22 C6 6A
|
|
|
|
|
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 = 1240898537</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>0811825D68B24C41EF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1261673549866484207</td>
|
|
|
|
|
<td><code>0818E5216698548105000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1793876751103066373</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>043C9A4017000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1016741911</td>
|
|
|
|
|
<td><code>04434AF623000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1128986147</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>0449F69BE9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1240898537</td>
|
|
|
|
|
<td><code>045EB51AB7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1588927159</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>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>3C0C1014DBE5F8D74334E9603675C3FA</code> <code>C4FAA796C2FCA645F5C4C39F9050497C</code></td>
|
|
|
|
|
<td><code>9A879B4220459F61DAD0C69612A47A3E</code> <code>C0076AB16E06364C700D14533A22C66A</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1240898537</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 = 955FF5A90811825D68B24C41EF000000043C9A40170000000449F69BE900000050042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F843C0C1014DBE5F8D74334E9603675C3FAC4FAA796C2FCA645F5C4C39F9050497C02000000
|
|
|
|
|
random_padding_bytes = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE5AF1969C0C250E0649806687C37A0882E2C08610F3EBD5DF39DC3221BA8332A8CA6DFDF1BCB5D7F57F15BD89A5F32148FED59A8439C5E68CEFA44C1D66D8F25</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A90818E521669854810500000004434AF623000000045EB51AB700000066CD1076621B9E73E9F5D2635F0C1A0126AFA97C5FD77FF1E039D14000ED241D9A879B4220459F61DAD0C69612A47A3EC0076AB16E06364C700D14533A22C66A02000000
|
|
|
|
|
random_padding_bytes = AC68E271EAEE1982E6AAE68D9D8BF850E7FF60921D8DF734798EA0D2BC3EB101027F4C7534517F48D6BC9E8541DF75F449C4758B88D72AB64B48F6A6B55F7613EBD18D7CD98CD53E42BEAE3425F3B57CB23B7DEA4910D5208F68C828</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 = B519E958BFD522D00D490335CAB2FEED9DE6F74BA8DB9887FCF54AEDFD3C5B4B383CE5E77EE0F033A22683DEA57D0BE279D680020499B10EDEE578B0DBB9C47C4B73F5EE3C60D36A16464371BA4D4AF2C86BE4CDBB6C940A0F2FF07FAEE5DC0AF7B478C34013DF745301221FFBA0A0D473D9CC8B2AD9A084366D31023E02D888F76C4772E118A0CE37FA7E0AB0704ED2F3DB67A691BA99AD41CC74D89AB6371DEBD3E1B98FAB0A951B90AD117B28081654DB8357F25C96EBEA9074561EE16D3B1AF516F8751C33D7839684D14B1CBA3004A98F3AB0D48DEA49ACF7D8E84A2849CB211BC1786371900FCC5AE0BD0177D7808B67FAFEF3B28E535CDE542E1C353A</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 653653CFB0757F413BB587CB19DAD439720270A1044E977861E5374030341977C54B1B479E995270816782C710D5DC842C9A60E9ECDC2B99E4214BAC4B2B248F29D32EB224981BFF4AF9864FB0CF9225F50B036DC714AD7C26385CA97B75ED09253A02AF66F3083E2B0B604FBC1CA175120037B92A891E2495DBD1CA086C4F283CE45760E24DAA9CA554204C68E2E6A7809DE6021AF626A8448F89CADB171D51B7E710EA78C6E8475F5445EB3CC15560AF846F9B19D39C7830621A04D14726E9893CB6795E96F6003A39B5E2521D58E50177BEDBCEBC5F545A71CE571043A60E17AEC6034ECE5DBF2DE0755242DA7807943BCC6987625C2A46F5F397502384ED</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 FC 87 0A 00 B1 3F A1 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 50 04 22 80 E4 B6 7C 30
|
|
|
|
|
0020 | 77 D4 A0 C1 2D 4D 1E C1 F2 E4 63 9D 99 B8 10 5C
|
|
|
|
|
0030 | A2 0D 76 A0 5F D1 1F 84 04 3C 9A 40 17 00 00 00
|
|
|
|
|
0040 | 04 49 F6 9B E9 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 B5 19 E9 58 BF D5 22 D0 0D 49 03 35
|
|
|
|
|
0060 | CA B2 FE ED 9D E6 F7 4B A8 DB 98 87 FC F5 4A ED
|
|
|
|
|
0070 | FD 3C 5B 4B 38 3C E5 E7 7E E0 F0 33 A2 26 83 DE
|
|
|
|
|
0080 | A5 7D 0B E2 79 D6 80 02 04 99 B1 0E DE E5 78 B0
|
|
|
|
|
0090 | DB B9 C4 7C 4B 73 F5 EE 3C 60 D3 6A 16 46 43 71
|
|
|
|
|
00A0 | BA 4D 4A F2 C8 6B E4 CD BB 6C 94 0A 0F 2F F0 7F
|
|
|
|
|
00B0 | AE E5 DC 0A F7 B4 78 C3 40 13 DF 74 53 01 22 1F
|
|
|
|
|
00C0 | FB A0 A0 D4 73 D9 CC 8B 2A D9 A0 84 36 6D 31 02
|
|
|
|
|
00D0 | 3E 02 D8 88 F7 6C 47 72 E1 18 A0 CE 37 FA 7E 0A
|
|
|
|
|
00E0 | B0 70 4E D2 F3 DB 67 A6 91 BA 99 AD 41 CC 74 D8
|
|
|
|
|
00F0 | 9A B6 37 1D EB D3 E1 B9 8F AB 0A 95 1B 90 AD 11
|
|
|
|
|
0100 | 7B 28 08 16 54 DB 83 57 F2 5C 96 EB EA 90 74 56
|
|
|
|
|
0110 | 1E E1 6D 3B 1A F5 16 F8 75 1C 33 D7 83 96 84 D1
|
|
|
|
|
0120 | 4B 1C BA 30 04 A9 8F 3A B0 D4 8D EA 49 AC F7 D8
|
|
|
|
|
0130 | E8 4A 28 49 CB 21 1B C1 78 63 71 90 0F CC 5A E0
|
|
|
|
|
0140 | BD 01 77 D7 80 8B 67 FA FE F3 B2 8E 53 5C DE 54
|
|
|
|
|
0150 | 2E 1C 35 3A</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 40 3B 0F 00 7A 43 A1 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 66 CD 10 76 62 1B 9E 73
|
|
|
|
|
0020 | E9 F5 D2 63 5F 0C 1A 01 26 AF A9 7C 5F D7 7F F1
|
|
|
|
|
0030 | E0 39 D1 40 00 ED 24 1D 04 43 4A F6 23 00 00 00
|
|
|
|
|
0040 | 04 5E B5 1A B7 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 65 36 53 CF B0 75 7F 41 3B B5 87 CB
|
|
|
|
|
0060 | 19 DA D4 39 72 02 70 A1 04 4E 97 78 61 E5 37 40
|
|
|
|
|
0070 | 30 34 19 77 C5 4B 1B 47 9E 99 52 70 81 67 82 C7
|
|
|
|
|
0080 | 10 D5 DC 84 2C 9A 60 E9 EC DC 2B 99 E4 21 4B AC
|
|
|
|
|
0090 | 4B 2B 24 8F 29 D3 2E B2 24 98 1B FF 4A F9 86 4F
|
|
|
|
|
00A0 | B0 CF 92 25 F5 0B 03 6D C7 14 AD 7C 26 38 5C A9
|
|
|
|
|
00B0 | 7B 75 ED 09 25 3A 02 AF 66 F3 08 3E 2B 0B 60 4F
|
|
|
|
|
00C0 | BC 1C A1 75 12 00 37 B9 2A 89 1E 24 95 DB D1 CA
|
|
|
|
|
00D0 | 08 6C 4F 28 3C E4 57 60 E2 4D AA 9C A5 54 20 4C
|
|
|
|
|
00E0 | 68 E2 E6 A7 80 9D E6 02 1A F6 26 A8 44 8F 89 CA
|
|
|
|
|
00F0 | DB 17 1D 51 B7 E7 10 EA 78 C6 E8 47 5F 54 45 EB
|
|
|
|
|
0100 | 3C C1 55 60 AF 84 6F 9B 19 D3 9C 78 30 62 1A 04
|
|
|
|
|
0110 | D1 47 26 E9 89 3C B6 79 5E 96 F6 00 3A 39 B5 E2
|
|
|
|
|
0120 | 52 1D 58 E5 01 77 BE DB CE BC 5F 54 5A 71 CE 57
|
|
|
|
|
0130 | 10 43 A6 0E 17 AE C6 03 4E CE 5D BF 2D E0 75 52
|
|
|
|
|
0140 | 42 DA 78 07 94 3B CC 69 87 62 5C 2A 46 F5 F3 97
|
|
|
|
|
0150 | 50 23 84 ED</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 = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>FC870A00B13FA166</code></td>
|
|
|
|
|
<td><code>403B0F007A43A166</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 = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>043C9A4017000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1016741911</td>
|
|
|
|
|
<td><code>04434AF623000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1128986147</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>0449F69BE9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1240898537</td>
|
|
|
|
|
<td><code>045EB51AB7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1588927159</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 = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE000100B519E958BFD522D00D490335</code> <code>CAB2FEED9DE6F74BA8DB9887FCF54AED</code> <code>FD3C5B4B383CE5E77EE0F033A22683DE</code> <code>A57D0BE279D680020499B10EDEE578B0</code> <code>DBB9C47C4B73F5EE3C60D36A16464371</code> <code>BA4D4AF2C86BE4CDBB6C940A0F2FF07F</code> <code>AEE5DC0AF7B478C34013DF745301221F</code> <code>FBA0A0D473D9CC8B2AD9A084366D3102</code> <code>3E02D888F76C4772E118A0CE37FA7E0A</code> <code>B0704ED2F3DB67A691BA99AD41CC74D8</code> <code>9AB6371DEBD3E1B98FAB0A951B90AD11</code> <code>7B28081654DB8357F25C96EBEA907456</code> <code>1EE16D3B1AF516F8751C33D7839684D1</code> <code>4B1CBA3004A98F3AB0D48DEA49ACF7D8</code> <code>E84A2849CB211BC1786371900FCC5AE0</code> <code>BD0177D7808B67FAFEF3B28E535CDE54</code><br> <code>2E1C353A</code></td>
|
|
|
|
|
<td><code>FE000100653653CFB0757F413BB587CB</code> <code>19DAD439720270A1044E977861E53740</code> <code>30341977C54B1B479E995270816782C7</code> <code>10D5DC842C9A60E9ECDC2B99E4214BAC</code> <code>4B2B248F29D32EB224981BFF4AF9864F</code> <code>B0CF9225F50B036DC714AD7C26385CA9</code> <code>7B75ED09253A02AF66F3083E2B0B604F</code> <code>BC1CA175120037B92A891E2495DBD1CA</code> <code>086C4F283CE45760E24DAA9CA554204C</code> <code>68E2E6A7809DE6021AF626A8448F89CA</code> <code>DB171D51B7E710EA78C6E8475F5445EB</code> <code>3CC15560AF846F9B19D39C7830621A04</code> <code>D14726E9893CB6795E96F6003A39B5E2</code> <code>521D58E50177BEDBCEBC5F545A71CE57</code> <code>1043A60E17AEC6034ECE5DBF2DE07552</code> <code>42DA7807943BCC6987625C2A46F5F397</code><br> <code>502384ED</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE
|
|
|
|
|
<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 58 8F 4D B2 3F A1 66
|
|
|
|
|
0010 | A0 02 00 00 5C 07 E8 D0 50 04 22 80 E4 B6 7C 30
|
|
|
|
|
0020 | 77 D4 A0 C1 2D 4D 1E C1 F2 E4 63 9D 99 B8 10 5C
|
|
|
|
|
0030 | A2 0D 76 A0 5F D1 1F 84 FE 50 02 00 10 5A A2 CB
|
|
|
|
|
0040 | D8 5D D3 3A 5D 1E F8 60 2F 11 A1 5F 25 40 61 F8
|
|
|
|
|
0050 | 9C E5 38 CB A2 74 A1 85 FE 0A 08 76 93 CC 62 B8
|
|
|
|
|
0060 | 00 CF A1 64 5F 9F 28 96 4F E7 97 66 B1 CF F0 48
|
|
|
|
|
0070 | BF 9E 38 ED 32 39 D0 D4 0D 09 54 FE C4 67 99 E4
|
|
|
|
|
0080 | 51 E2 65 AD 2D 8F 5C 09 1D 26 22 99 77 F8 3A D7
|
|
|
|
|
0090 | FA 9F D8 62 45 D2 F5 78 6A D0 C0 FB 79 AA 32 5A
|
|
|
|
|
00A0 | 95 91 7C 88 5B 87 DB 1F 27 3F 88 EE 9B 7D B1 8F
|
|
|
|
|
00B0 | 69 26 3B C7 10 C2 9C 3C 69 29 4C 85 BC 5A 3F 67
|
|
|
|
|
00C0 | 2F A9 66 AA 43 C9 0A A4 5E F5 96 13 9D 9D 61 C9
|
|
|
|
|
00D0 | 65 C5 57 BB 25 D3 EA 2E D7 3B AC A4 59 EF FE EF
|
|
|
|
|
00E0 | A8 AB 28 14 F5 6E 84 1B 31 E4 0D BD B9 77 58 FD
|
|
|
|
|
00F0 | DD 66 98 A6 86 C9 19 C2 07 C5 D6 7B 6E 35 0F 79
|
|
|
|
|
0100 | 28 02 4D 61 4C 63 BB 8B A9 9F 74 C4 D9 67 43 03
|
|
|
|
|
0110 | FB 37 EC D0 CE 54 02 49 97 84 ED C0 4B 21 5E F6
|
|
|
|
|
0120 | 7B 1B 55 15 C2 E6 71 D2 60 C4 83 03 C9 DB 49 8C
|
|
|
|
|
0130 | 64 44 AA E1 81 11 1C 84 9C 3E 90 8D 4F 56 18 FC
|
|
|
|
|
0140 | B5 09 26 FC 3F BD 4A 67 56 EF EF 9A 1E 9C 98 08
|
|
|
|
|
0150 | 65 2A E0 14 66 FF F6 E3 E9 DB 55 5F FA C9 11 06
|
|
|
|
|
0160 | F1 71 E0 5D 35 8A 76 27 74 AC A5 13 F5 78 03 6F
|
|
|
|
|
0170 | D8 07 8D CC CB 43 90 18 F6 D8 CE 7C 79 38 EA C5
|
|
|
|
|
0180 | A4 5E FC E2 40 9A 44 FD 04 25 47 D3 FD 16 E8 46
|
|
|
|
|
0190 | 66 19 09 A3 77 B1 CD 42 54 BF E5 1B 19 39 A4 FF
|
|
|
|
|
01A0 | 52 97 C5 A9 FF 7B 8F 4E D6 11 2D AD 5D 4C 3D 88
|
|
|
|
|
01B0 | E2 E1 28 D5 82 48 02 DC 75 51 4B 36 59 87 0B D5
|
|
|
|
|
01C0 | 6B 1C D4 70 F8 46 CE EA 6D 2A 23 AC 69 67 41 F1
|
|
|
|
|
01D0 | 61 42 A1 3F 49 0D 47 AE 29 06 EF AA 07 35 F9 91
|
|
|
|
|
01E0 | D6 9F B8 8D 7A D4 CF A5 40 A1 AA FA 5C 7F 6E CB
|
|
|
|
|
01F0 | CE FB BD 9C DA BF C0 D7 89 E3 CC A6 DE 30 42 EC
|
|
|
|
|
0200 | DF 52 42 33 21 8C 41 9A 8A 3C 18 7F 25 51 A4 80
|
|
|
|
|
0210 | D2 7D B9 C8 76 F6 72 EF 39 D2 BC 8F 8B 95 B7 0A
|
|
|
|
|
0220 | 84 F7 5D 24 C5 4D 62 55 A2 F8 75 1A 38 FC C6 4E
|
|
|
|
|
0230 | EA 08 96 DE 76 CE C5 8D 89 9E FA 8B 20 AF 3C FC
|
|
|
|
|
0240 | 57 9C 36 14 D5 A9 5E 2C 6E B9 A2 04 86 11 1A 80
|
|
|
|
|
0250 | B2 47 12 D3 CC 50 D3 E1 67 A5 C7 08 9A 63 EE 6F
|
|
|
|
|
0260 | AF 1C 60 DF 63 57 F8 81 C4 E2 AF DC 58 C6 91 C7
|
|
|
|
|
0270 | 08 3D 76 39 DC CE 5E 1D FF F0 B4 1E F5 77 BC B8
|
|
|
|
|
0280 | 4C C1 80 3D 71 24 D3 98 CD 5B 6F 97</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E0 8B A3 7B 43 A1 66
|
|
|
|
|
0010 | A4 02 00 00 5C 07 E8 D0 66 CD 10 76 62 1B 9E 73
|
|
|
|
|
0020 | E9 F5 D2 63 5F 0C 1A 01 26 AF A9 7C 5F D7 7F F1
|
|
|
|
|
0030 | E0 39 D1 40 00 ED 24 1D FE 50 02 00 18 B9 1A 33
|
|
|
|
|
0040 | DE F8 5A FB 14 DF CA 63 35 97 CD BA B2 C2 34 4D
|
|
|
|
|
0050 | 8A F8 F5 44 20 5E 48 63 F1 D3 40 77 F9 77 1C 75
|
|
|
|
|
0060 | 8D 22 7D BA A3 BB 9F 3C FE F7 2F 5C 79 CC 3C D0
|
|
|
|
|
0070 | 59 28 8F CC 65 16 46 19 3E 13 BD CA 93 A2 23 E5
|
|
|
|
|
0080 | 04 0B C3 0F 3F 90 2A 11 12 90 65 B4 8A 65 0E FB
|
|
|
|
|
0090 | F6 76 CF 71 38 C2 1C 33 5F 40 EC AE BA E9 CD A4
|
|
|
|
|
00A0 | 3D 39 D4 A3 58 55 99 92 3B 15 FC FA C8 97 A2 8D
|
|
|
|
|
00B0 | B5 0B 54 7D 9A B2 D9 B7 B0 40 5B 65 93 03 6D 12
|
|
|
|
|
00C0 | FA 41 50 0F 3A 03 F7 E9 C6 24 B0 6B C1 A4 D9 16
|
|
|
|
|
00D0 | 94 1C 39 0F 63 D5 F5 18 09 43 D3 F8 0C 3F E5 30
|
|
|
|
|
00E0 | 07 96 55 E2 3C 4C 1E B2 2A 9F FE A3 72 E6 6A 41
|
|
|
|
|
00F0 | 7D 60 4F D6 D0 5F 34 35 88 C2 BC 8F 92 7A 84 44
|
|
|
|
|
0100 | 7B EF CA 8B C9 0B E1 2C D2 37 37 6D 16 73 17 12
|
|
|
|
|
0110 | 6A D2 5E 7C 2A 80 83 70 CF 9D 63 88 CC CE 13 CC
|
|
|
|
|
0120 | 49 F8 EA E4 A3 6C 97 44 F3 11 CB 79 60 05 04 E1
|
|
|
|
|
0130 | A0 5B F2 16 71 A1 BA AA 52 D3 8F 38 3E F5 6C BD
|
|
|
|
|
0140 | 6B A4 D5 E9 14 A9 35 50 FF 74 CC E1 DA 5E CD 5C
|
|
|
|
|
0150 | 77 ED AF 39 F5 AC BE 7E 8D BE 21 DF FB 1A 99 80
|
|
|
|
|
0160 | 99 D4 13 47 09 5E E9 B7 5D 2E 63 E7 45 D1 1B 00
|
|
|
|
|
0170 | 4B DF 79 46 FA 8C A7 AF 0F 08 BA 2D 8A 41 BA 9B
|
|
|
|
|
0180 | 8F B2 7B 25 DD 5F 5E 28 CF B7 C0 90 58 D4 C4 ED
|
|
|
|
|
0190 | DF F7 FB E8 33 EC FB 98 C3 BC 36 C3 EC E4 52 15
|
|
|
|
|
01A0 | 95 F2 24 6F DB 05 D9 C3 03 2A 24 A9 85 A7 89 5F
|
|
|
|
|
01B0 | 3A 84 B4 A7 7C 6D 6E 19 5A 58 94 46 79 69 44 E6
|
|
|
|
|
01C0 | B5 4E B0 87 55 CD 4F 03 C5 07 A1 F8 86 54 51 C4
|
|
|
|
|
01D0 | 4B F3 DB 53 DA 1F 95 DD 8F 0D 16 42 41 C0 84 43
|
|
|
|
|
01E0 | 8F AC F5 DD 5C E9 1E 1F BA B4 AE 23 DF 58 88 EA
|
|
|
|
|
01F0 | 49 70 5D 85 88 7F 37 40 D2 FD 13 87 AD D0 F1 D0
|
|
|
|
|
0200 | B5 97 69 E7 A1 24 72 13 7A 65 99 BB 08 02 5B 37
|
|
|
|
|
0210 | 96 69 5E 34 3F 39 33 BF AF 19 DA 9B 9D 13 52 E8
|
|
|
|
|
0220 | A5 ED 5D 01 3B 11 84 86 AC F9 76 B8 AA E8 65 36
|
|
|
|
|
0230 | 2C 20 9C B4 92 A9 34 7E 09 B3 01 36 9D E8 C5 6D
|
|
|
|
|
0240 | E5 06 1E DE D3 7C B5 E3 1D FA 98 DB 4A 27 73 FB
|
|
|
|
|
0250 | 07 36 A1 87 ED 5F 46 92 2D 37 44 6F 1C 6E 26 DD
|
|
|
|
|
0260 | 64 CC 1C D1 A3 8C 07 D9 9A CA FB F7 C6 09 91 03
|
|
|
|
|
0270 | BA A4 93 2C C1 A2 8F D0 C3 5B 2D 6C FB 9D 73 F9
|
|
|
|
|
0280 | F3 FD 90 06 DD DA B1 3D 23 08 5D 80</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 = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>01588F4DB23FA166</code></td>
|
|
|
|
|
<td><code>01E08BA37B43A166</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>A0020000</code> (672 in decimal)</td>
|
|
|
|
|
<td><code>A4020000</code> (676 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200105AA2CBD85DD33A5D1EF860</code> <code>2F11A15F254061F89CE538CBA274A185</code> <code>FE0A087693CC62B800CFA1645F9F2896</code> <code>4FE79766B1CFF048BF9E38ED3239D0D4</code> <code>0D0954FEC46799E451E265AD2D8F5C09</code> <code>1D26229977F83AD7FA9FD86245D2F578</code> <code>6AD0C0FB79AA325A95917C885B87DB1F</code> <code>273F88EE9B7DB18F69263BC710C29C3C</code> <code>69294C85BC5A3F672FA966AA43C90AA4</code> <code>5EF596139D9D61C965C557BB25D3EA2E</code> <code>D73BACA459EFFEEFA8AB2814F56E841B</code> <code>31E40DBDB97758FDDD6698A686C919C2</code> <code>07C5D67B6E350F7928024D614C63BB8B</code> <code>A99F74C4D9674303FB37ECD0CE540249</code> <code>9784EDC04B215EF67B1B5515C2E671D2</code> <code>60C48303C9DB498C6444AAE181111C84</code> <code>9C3E908D4F5618FCB50926FC3FBD4A67</code> <code>56EFEF9A1E9C9808652AE01466FFF6E3</code> <code>E9DB555FFAC91106F171E05D358A7627</code> <code>74ACA513F578036FD8078DCCCB439018</code> <code>F6D8CE7C7938EAC5A45EFCE2409A44FD</code> <code>042547D3FD16E846661909A377B1CD42</code> <code>54BFE51B1939A4FF5297C5A9FF7B8F4E</code> <code>D6112DAD5D4C3D88E2E128D5824802DC</code> <code>75514B3659870BD56B1CD470F846CEEA</code> <code>6D2A23AC696741F16142A13F490D47AE</code> <code>2906EFAA0735F991D69FB88D7AD4CFA5</code> <code>40A1AAFA5C7F6ECBCEFBBD9CDABFC0D7</code> <code>89E3CCA6DE3042ECDF524233218C419A</code> <code>8A3C187F2551A480D27DB9C876F672EF</code> <code>39D2BC8F8B95B70A84F75D24C54D6255</code> <code>A2F8751A38FCC64EEA0896DE76CEC58D</code> <code>899EFA8B20AF3CFC579C3614D5A95E2C</code> <code>6EB9A20486111A80B24712D3CC50D3E1</code> <code>67A5C7089A63EE6FAF1C60DF6357F881</code> <code>C4E2AFDC58C691C7083D7639DCCE5E1D</code> <code>FFF0B41EF577BCB84CC1803D7124D398</code><br> <code>CD5B6F97</code></td>
|
|
|
|
|
<td><code>FE50020018B91A33DEF85AFB14DFCA63</code> <code>3597CDBAB2C2344D8AF8F544205E4863</code> <code>F1D34077F9771C758D227DBAA3BB9F3C</code> <code>FEF72F5C79CC3CD059288FCC65164619</code> <code>3E13BDCA93A223E5040BC30F3F902A11</code> <code>129065B48A650EFBF676CF7138C21C33</code> <code>5F40ECAEBAE9CDA43D39D4A358559992</code> <code>3B15FCFAC897A28DB50B547D9AB2D9B7</code> <code>B0405B6593036D12FA41500F3A03F7E9</code> <code>C624B06BC1A4D916941C390F63D5F518</code> <code>0943D3F80C3FE530079655E23C4C1EB2</code> <code>2A9FFEA372E66A417D604FD6D05F3435</code> <code>88C2BC8F927A84447BEFCA8BC90BE12C</code> <code>D237376D167317126AD25E7C2A808370</code> <code>CF9D6388CCCE13CC49F8EAE4A36C9744</code> <code>F311CB79600504E1A05BF21671A1BAAA</code> <code>52D38F383EF56CBD6BA4D5E914A93550</code> <code>FF74CCE1DA5ECD5C77EDAF39F5ACBE7E</code> <code>8DBE21DFFB1A998099D41347095EE9B7</code> <code>5D2E63E745D11B004BDF7946FA8CA7AF</code> <code>0F08BA2D8A41BA9B8FB27B25DD5F5E28</code> <code>CFB7C09058D4C4EDDFF7FBE833ECFB98</code> <code>C3BC36C3ECE4521595F2246FDB05D9C3</code> <code>032A24A985A7895F3A84B4A77C6D6E19</code> <code>5A589446796944E6B54EB08755CD4F03</code> <code>C507A1F8865451C44BF3DB53DA1F95DD</code> <code>8F0D164241C084438FACF5DD5CE91E1F</code> <code>BAB4AE23DF5888EA49705D85887F3740</code> <code>D2FD1387ADD0F1D0B59769E7A1247213</code> <code>7A6599BB08025B3796695E343F3933BF</code> <code>AF19DA9B9D1352E8A5ED5D013B118486</code> <code>ACF976B8AAE865362C209CB492A9347E</code> <code>09B301369DE8C56DE5061EDED37CB5E3</code> <code>1DFA98DB4A2773FB0736A187ED5F4692</code> <code>2D37446F1C6E26DD64CC1CD1A38C07D9</code> <code>9ACAFBF7C6099103BAA4932CC1A28FD0</code> <code>C35B2D6CFB9D73F9F3FD9006DDDAB13D</code><br> <code>23085D80</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 164CC8038512BCF8178FDB95E42550E63A4D1215196110827BFF368AE
|
|
|
|
|
<!-- 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 = 105AA2CBD85DD33A5D1EF8602F11A15F254061F89CE538CBA274A185FE0A087693CC62B800CFA1645F9F28964FE79766B1CFF048BF9E38ED3239D0D40D0954FEC46799E451E265AD2D8F5C091D26229977F83AD7FA9FD86245D2F5786AD0C0FB79AA325A95917C885B87DB1F273F88EE9B7DB18F69263BC710C29C3C69294C85BC5A3F672FA966AA43C90AA45EF596139D9D61C965C557BB25D3EA2ED73BACA459EFFEEFA8AB2814F56E841B31E40DBDB97758FDDD6698A686C919C207C5D67B6E350F7928024D614C63BB8BA99F74C4D9674303FB37ECD0CE5402499784EDC04B215EF67B1B5515C2E671D260C48303C9DB498C6444AAE181111C849C3E908D4F5618FCB50926FC3FBD4A6756EFEF9A1E9C9808652AE01466FFF6E3E9DB555FFAC91106F171E05D358A762774ACA513F578036FD8078DCCCB439018F6D8CE7C7938EAC5A45EFCE2409A44FD042547D3FD16E846661909A377B1CD4254BFE51B1939A4FF5297C5A9FF7B8F4ED6112DAD5D4C3D88E2E128D5824802DC75514B3659870BD56B1CD470F846CEEA6D2A23AC696741F16142A13F490D47AE2906EFAA0735F991D69FB88D7AD4CFA540A1AAFA5C7F6ECBCEFBBD9CDABFC0D789E3CCA6DE3042ECDF524233218C419A8A3C187F2551A480D27DB9C876F672EF39D2BC8F8B95B70A84F75D24C54D6255A2F8751A38FCC64EEA0896DE76CEC58D899EFA8B20AF3CFC579C3614D5A95E2C6EB9A20486111A80B24712D3CC50D3E167A5C7089A63EE6FAF1C60DF6357F881C4E2AFDC58C691C7083D7639DCCE5E1DFFF0B41EF577BCB84CC1803D7124D398CD5B6F97
|
|
|
|
|
tmp_aes_key = 0862009CDA343B604C16E1FB67162F4A6E0328779435AE8B32B844D8B8AE1B27
|
|
|
|
|
tmp_aes_iv = D322BF7B0FE3405722AE697F94816E143A5EB539D3129610D71EA71C3C0C1014</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = 18B91A33DEF85AFB14DFCA633597CDBAB2C2344D8AF8F544205E4863F1D34077F9771C758D227DBAA3BB9F3CFEF72F5C79CC3CD059288FCC651646193E13BDCA93A223E5040BC30F3F902A11129065B48A650EFBF676CF7138C21C335F40ECAEBAE9CDA43D39D4A3585599923B15FCFAC897A28DB50B547D9AB2D9B7B0405B6593036D12FA41500F3A03F7E9C624B06BC1A4D916941C390F63D5F5180943D3F80C3FE530079655E23C4C1EB22A9FFEA372E66A417D604FD6D05F343588C2BC8F927A84447BEFCA8BC90BE12CD237376D167317126AD25E7C2A808370CF9D6388CCCE13CC49F8EAE4A36C9744F311CB79600504E1A05BF21671A1BAAA52D38F383EF56CBD6BA4D5E914A93550FF74CCE1DA5ECD5C77EDAF39F5ACBE7E8DBE21DFFB1A998099D41347095EE9B75D2E63E745D11B004BDF7946FA8CA7AF0F08BA2D8A41BA9B8FB27B25DD5F5E28CFB7C09058D4C4EDDFF7FBE833ECFB98C3BC36C3ECE4521595F2246FDB05D9C3032A24A985A7895F3A84B4A77C6D6E195A589446796944E6B54EB08755CD4F03C507A1F8865451C44BF3DB53DA1F95DD8F0D164241C084438FACF5DD5CE91E1FBAB4AE23DF5888EA49705D85887F3740D2FD1387ADD0F1D0B59769E7A12472137A6599BB08025B3796695E343F3933BFAF19DA9B9D1352E8A5ED5D013B118486ACF976B8AAE865362C209CB492A9347E09B301369DE8C56DE5061EDED37CB5E31DFA98DB4A2773FB0736A187ED5F46922D37446F1C6E26DD64CC1CD1A38C07D99ACAFBF7C6099103BAA4932CC1A28FD0C35B2D6CFB9D73F9F3FD9006DDDAB13D23085D80
|
|
|
|
|
tmp_aes_key = 9C9BB7C3AA015DBE62FE5577D0C089EF7C0A6EE4350CAC3BEE267C92AF846BBF
|
|
|
|
|
tmp_aes_iv = E8F23793463529F1EBDB9B64830F0D3FDD9F5AD447CBBFF257E7385F9A879B42</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = 15989B2F251AB8C10E1E412DAFCA6D7A6E352BCABA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100AF72F3963FDBA1665B55447FD1D6E0085A7B44999E834CE16D600DA97DD44E70D4AFE2C8BDD51B7B1CD921D566A9D89CAE5CA7BF4C88DA694EAEC3ECA1A938FE626D3A1D2ED84D9404ABC37ED8629A638F8591F441A21F4BE3388FDE34B271C9692F2EBD1F3BAB1A6CE391A0401D3F0417FFF96609178D4CF3D3CE1564264DD6266719A559BB5E40A6B69955BBBE32F0CFB7BDAA0B3A52CD1A6A72B87C9EE66495C1ACCCA3BDA8299229D0045D59F9795BD3B38FC7A54EE590200E95EE7C739EA80ADEE55649226009BC14D36797613DC4220B126631A41371739FD63F3FAE3E5219B9164E45EA8BFEBF57B239655B1745D73065C05E7A3DD69F0331AFF4B59EB23FA1663946F5D0F640DDA7
|
|
|
|
|
answer = BA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100AF72F3963FDBA1665B55447FD1D6E0085A7B44999E834CE16D600DA97DD44E70D4AFE2C8BDD51B7B1CD921D566A9D89CAE5CA7BF4C88DA694EAEC3ECA1A938FE626D3A1D2ED84D9404ABC37ED8629A638F8591F441A21F4BE3388FDE34B271C9692F2EBD1F3BAB1A6CE391A0401D3F0417FFF96609178D4CF3D3CE1564264DD6266719A559BB5E40A6B69955BBBE32F0CFB7BDAA0B3A52CD1A6A72B87C9EE66495C1ACCCA3BDA8299229D0045D59F9795BD3B38FC7A54EE590200E95EE7C739EA80ADEE55649226009BC14D36797613DC4220B126631A41371739FD63F3FAE3E5219B9164E45EA8BFEBF57B239655B1745D73065C05E7A3DD69F0331AFF4B59EB23FA1663946F5D0F640DDA7</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = 410295692DFDDE1C218D38A7F377C196FCBF538BBA0D89B566CD1076621B9E73E9F5D2635F0C1A0126AFA97C5FD77FF1E039D14000ED241D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BBCC9D18A34899FB13B987A3CDCD838DCE934554B98753F095E890A9B2934D144F8E07531A5522636C85B594D1576A0C56C1C29C99421294238FE8006B59EC9EF5BE48DE208B3134FED5415256A61DB92FF630B341DFFB475CC3BAFA8C8578BDD5CD41C7EC15D05436BC6E30BBD00A76FC79CD743966153C8D0DC39083E4DF249B30F7E98261112410DFBC70C9699C1CD4233650D57BB91EE1BD381294807DCA26DEE3EBF37ADD9E361E4DCA6CA35F539605116EF1D7412933E45651A1C2E9EF67BC393FB9E71036429D7B66528543DD657C300436C968DE7A033A1E550E22E825A3F7481AF4BBB7DADAF640EF265788813546C7F9898F2E8CDD45A6889FD1637B43A16627A4C8D9D2F1C26B
|
|
|
|
|
answer = BA0D89B566CD1076621B9E73E9F5D2635F0C1A0126AFA97C5FD77FF1E039D14000ED241D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BBCC9D18A34899FB13B987A3CDCD838DCE934554B98753F095E890A9B2934D144F8E07531A5522636C85B594D1576A0C56C1C29C99421294238FE8006B59EC9EF5BE48DE208B3134FED5415256A61DB92FF630B341DFFB475CC3BAFA8C8578BDD5CD41C7EC15D05436BC6E30BBD00A76FC79CD743966153C8D0DC39083E4DF249B30F7E98261112410DFBC70C9699C1CD4233650D57BB91EE1BD381294807DCA26DEE3EBF37ADD9E361E4DCA6CA35F539605116EF1D7412933E45651A1C2E9EF67BC393FB9E71036429D7B66528543DD657C300436C968DE7A033A1E550E22E825A3F7481AF4BBB7DADAF640EF265788813546C7F9898F2E8CDD45A6889FD1637B43A16627A4C8D9D2F1C26B</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 50 04 22 80 E4 B6 7C 30 77 D4 A0 C1
|
|
|
|
|
0010 | 2D 4D 1E C1 F2 E4 63 9D 99 B8 10 5C A2 0D 76 A0
|
|
|
|
|
0020 | 5F D1 1F 84 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 66 CD 10 76 62 1B 9E 73 E9 F5 D2 63
|
|
|
|
|
0010 | 5F 0C 1A 01 26 AF A9 7C 5F D7 7F F1 E0 39 D1 40
|
|
|
|
|
0020 | 00 ED 24 1D 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 = BA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8
|
|
|
|
|
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 | AF 72 F3 96 3F DB A1 66 5B 55 44 7F D1 D6 E0 08
|
|
|
|
|
0140 | 5A 7B 44 99 9E 83 4C E1 6D 60 0D A9 7D D4 4E 70
|
|
|
|
|
0150 | D4 AF E2 C8 BD D5 1B 7B 1C D9 21 D5 66 A9 D8 9C
|
|
|
|
|
0160 | AE 5C A7 BF 4C 88 DA 69 4E AE C3 EC A1 A9 38 FE
|
|
|
|
|
0170 | 62 6D 3A 1D 2E D8 4D 94 04 AB C3 7E D8 62 9A 63
|
|
|
|
|
0180 | 8F 85 91 F4 41 A2 1F 4B E3 38 8F DE 34 B2 71 C9
|
|
|
|
|
0190 | 69 2F 2E BD 1F 3B AB 1A 6C E3 91 A0 40 1D 3F 04
|
|
|
|
|
01A0 | 17 FF F9 66 09 17 8D 4C F3 D3 CE 15 64 26 4D D6
|
|
|
|
|
01B0 | 26 67 19 A5 59 BB 5E 40 A6 B6 99 55 BB BE 32 F0
|
|
|
|
|
01C0 | CF B7 BD AA 0B 3A 52 CD 1A 6A 72 B8 7C 9E E6 64
|
|
|
|
|
01D0 | 95 C1 AC CC A3 BD A8 29 92 29 D0 04 5D 59 F9 79
|
|
|
|
|
01E0 | 5B D3 B3 8F C7 A5 4E E5 90 20 0E 95 EE 7C 73 9E
|
|
|
|
|
01F0 | A8 0A DE E5 56 49 22 60 09 BC 14 D3 67 97 61 3D
|
|
|
|
|
0200 | C4 22 0B 12 66 31 A4 13 71 73 9F D6 3F 3F AE 3E
|
|
|
|
|
0210 | 52 19 B9 16 4E 45 EA 8B FE BF 57 B2 39 65 5B 17
|
|
|
|
|
0220 | 45 D7 30 65 C0 5E 7A 3D D6 9F 03 31 AF F4 B5 9E
|
|
|
|
|
0230 | B2 3F A1 66</code></pre>
|
|
|
|
|
0130 | BB CC 9D 18 A3 48 99 FB 13 B9 87 A3 CD CD 83 8D
|
|
|
|
|
0140 | CE 93 45 54 B9 87 53 F0 95 E8 90 A9 B2 93 4D 14
|
|
|
|
|
0150 | 4F 8E 07 53 1A 55 22 63 6C 85 B5 94 D1 57 6A 0C
|
|
|
|
|
0160 | 56 C1 C2 9C 99 42 12 94 23 8F E8 00 6B 59 EC 9E
|
|
|
|
|
0170 | F5 BE 48 DE 20 8B 31 34 FE D5 41 52 56 A6 1D B9
|
|
|
|
|
0180 | 2F F6 30 B3 41 DF FB 47 5C C3 BA FA 8C 85 78 BD
|
|
|
|
|
0190 | D5 CD 41 C7 EC 15 D0 54 36 BC 6E 30 BB D0 0A 76
|
|
|
|
|
01A0 | FC 79 CD 74 39 66 15 3C 8D 0D C3 90 83 E4 DF 24
|
|
|
|
|
01B0 | 9B 30 F7 E9 82 61 11 24 10 DF BC 70 C9 69 9C 1C
|
|
|
|
|
01C0 | D4 23 36 50 D5 7B B9 1E E1 BD 38 12 94 80 7D CA
|
|
|
|
|
01D0 | 26 DE E3 EB F3 7A DD 9E 36 1E 4D CA 6C A3 5F 53
|
|
|
|
|
01E0 | 96 05 11 6E F1 D7 41 29 33 E4 56 51 A1 C2 E9 EF
|
|
|
|
|
01F0 | 67 BC 39 3F B9 E7 10 36 42 9D 7B 66 52 85 43 DD
|
|
|
|
|
0200 | 65 7C 30 04 36 C9 68 DE 7A 03 3A 1E 55 0E 22 E8
|
|
|
|
|
0210 | 25 A3 F7 48 1A F4 BB B7 DA DA F6 40 EF 26 57 88
|
|
|
|
|
0220 | 81 35 46 C7 F9 89 8F 2E 8C DD 45 A6 88 9F D1 63
|
|
|
|
|
0230 | 7B 43 A1 66</code></pre>
|
|
|
|
|
<p>Payload (de)serialization:</p>
|
|
|
|
|
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
|
|
|
|
<table class="table">
|
|
|
|
@ -570,13 +570,13 @@ answer = BA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE000100AF72F3963FDBA1665B55447F</code> <code>D1D6E0085A7B44999E834CE16D600DA9</code> <code>7DD44E70D4AFE2C8BDD51B7B1CD921D5</code> <code>66A9D89CAE5CA7BF4C88DA694EAEC3EC</code> <code>A1A938FE626D3A1D2ED84D9404ABC37E</code> <code>D8629A638F8591F441A21F4BE3388FDE</code> <code>34B271C9692F2EBD1F3BAB1A6CE391A0</code> <code>401D3F0417FFF96609178D4CF3D3CE15</code> <code>64264DD6266719A559BB5E40A6B69955</code> <code>BBBE32F0CFB7BDAA0B3A52CD1A6A72B8</code> <code>7C9EE66495C1ACCCA3BDA8299229D004</code> <code>5D59F9795BD3B38FC7A54EE590200E95</code> <code>EE7C739EA80ADEE55649226009BC14D3</code> <code>6797613DC4220B126631A41371739FD6</code> <code>3F3FAE3E5219B9164E45EA8BFEBF57B2</code> <code>39655B1745D73065C05E7A3DD69F0331</code><br> <code>AFF4B59E</code></td>
|
|
|
|
|
<td><code>FE000100BBCC9D18A34899FB13B987A3</code> <code>CDCD838DCE934554B98753F095E890A9</code> <code>B2934D144F8E07531A5522636C85B594</code> <code>D1576A0C56C1C29C99421294238FE800</code> <code>6B59EC9EF5BE48DE208B3134FED54152</code> <code>56A61DB92FF630B341DFFB475CC3BAFA</code> <code>8C8578BDD5CD41C7EC15D05436BC6E30</code> <code>BBD00A76FC79CD743966153C8D0DC390</code> <code>83E4DF249B30F7E98261112410DFBC70</code> <code>C9699C1CD4233650D57BB91EE1BD3812</code> <code>94807DCA26DEE3EBF37ADD9E361E4DCA</code> <code>6CA35F539605116EF1D7412933E45651</code> <code>A1C2E9EF67BC393FB9E71036429D7B66</code> <code>528543DD657C300436C968DE7A033A1E</code> <code>550E22E825A3F7481AF4BBB7DADAF640</code> <code>EF265788813546C7F9898F2E8CDD45A6</code><br> <code>889FD163</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>B23FA166</code> (1721843634 in decimal)</td>
|
|
|
|
|
<td><code>7B43A166</code> (1721844603 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8
|
|
|
|
|
<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 = 93831429A46135EDDDD7FA9F99A950A8F978D0A68E8D7B157E1E15BF5491C86C19F72A34ED3AD9D6E4135149055ACE071B83C077005A7E13DD657933D6F456BAD726BBF52A6245236DFB4C1C4E9B94286A2B8B7E597B890E3274939AD16CD51E9C42F574BCD2B1328CBE1B82E731ABCD8CDD751A74454F23461C0C7A5A939512B0BAC1D304D921ECDFCA0024D5232200E0BE5DB9EC5FCD7D0544BE0DC87C78585DA374636733153DFD9B795E59696EC94E5B5C3DDC26EA57FF31E0ADE45E274904EAC9749C8E4C5CEE0B8A4D568FE53798A7B12390B70FF3B5420FF8737B03D86AA79A318894BC57BA78AB65CC9EC4362290B3DE859A52A83485BE9F3CC59DE9</code></pre>
|
|
|
|
|
<pre><code>b = F3BD198E3CC3EFD50CD81617DEC349D6D1CED6F151A3CF2FDB8474C745B699024DFF87C750C1F1010337E7978602B9CF5A40886FA213B8CAD0DDDCEFFA24E5085CDBDC0B7AA83CD5EE3B4D556F17B0E8D75FA54ABDC2FC158B6A85E84EEA42BBA411805625F08922C83D3736B580B69003BDF7F25DE7216094305A4C384A1C98446D1572BE84ECB8A217DF614D6B7B32E473A1C2B8C8AF7DC957F7CA88D42BD3CDA313CC685434E3AEC33125C486983C799DAA1712AB9113539A555F932CF7ACF4C0F5FAD58EA6A2D4441738312EA3A021F0CCB49C79DD54BB9E4AA8938C33BA64016CFAE612641C4D9D080A08B15879CAA6DA8DCADFBF0EED807293433251A4</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 = A19FC9C0AB9D0660D1FC2A6FA650B68422641BE7BD061CC7D1F909B12DF949E884D2FCD2F97E777C6583577F57F488AA8CEBF3F05C38194F9B9D17874D33E6ED37A5CBE1E53693C99A03137344CD3BE2BF92090DB52AB1FDA3825E879353A78BF6BC1C890301518C1E4E86A5B183A0B3A7C6F99AC6AC57DC42DCA8CE3FD1CE726F07D68AF73D5845CC0FD7746D11037D8BE9AF2F6B0726FDA1CEB97F309653E97CD36F321DCD7829ED9C9BCD1799C8A19F39F721358AC0581CE7BFA95BE2BD840FA03888ED2A04745B2910E5289800A42B3A6569CE9EAD24E7ED51E44D4D1ACE7F2C121B228E584E26D698D613ECC0CCAEE72E9ACA01BF3901D94027327FD1C1</code></pre>
|
|
|
|
|
<pre><code>g_b = 9B35B0EE11899D4E05822A62AE8FBE66F760548CFB05D137B00A90B349D0FB053E66AB85CA80E7347960D6780CB79A2FEA109EACB12BCBE9C8D8D66DB20C4D40475ADBBCFEB1E5E8B346BA902EBE0AE9A00FB96337218A46E66CC5323AE8F88EE814707FA57887FF010FEE519704DE88056B5C3BDBF8D911DA07B2E9F615C41C495A47372AC3E8D5604D24B2C94737142CE8FA10765C7575CEA0136B3B2F17CC93B2CC5C46EB8C7416CAFFD346C9784B7A3B50EE2B064380087F3E86EBE9C2679DC1F4A238C9D27660FDE64C53798EC23BBB36F602441F37B2F370F1F3379D0FB57FCA43B9A58B4CA7022E658D0D93849543CAC46DDFB27D6DDED4174DDA97CB</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 50 04 22 80 E4 B6 7C 30 77 D4 A0 C1
|
|
|
|
|
0010 | 2D 4D 1E C1 F2 E4 63 9D 99 B8 10 5C A2 0D 76 A0
|
|
|
|
|
0020 | 5F D1 1F 84 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | A1 9F C9 C0 AB 9D 06 60 D1 FC 2A 6F A6 50 B6 84
|
|
|
|
|
0040 | 22 64 1B E7 BD 06 1C C7 D1 F9 09 B1 2D F9 49 E8
|
|
|
|
|
0050 | 84 D2 FC D2 F9 7E 77 7C 65 83 57 7F 57 F4 88 AA
|
|
|
|
|
0060 | 8C EB F3 F0 5C 38 19 4F 9B 9D 17 87 4D 33 E6 ED
|
|
|
|
|
0070 | 37 A5 CB E1 E5 36 93 C9 9A 03 13 73 44 CD 3B E2
|
|
|
|
|
0080 | BF 92 09 0D B5 2A B1 FD A3 82 5E 87 93 53 A7 8B
|
|
|
|
|
0090 | F6 BC 1C 89 03 01 51 8C 1E 4E 86 A5 B1 83 A0 B3
|
|
|
|
|
00A0 | A7 C6 F9 9A C6 AC 57 DC 42 DC A8 CE 3F D1 CE 72
|
|
|
|
|
00B0 | 6F 07 D6 8A F7 3D 58 45 CC 0F D7 74 6D 11 03 7D
|
|
|
|
|
00C0 | 8B E9 AF 2F 6B 07 26 FD A1 CE B9 7F 30 96 53 E9
|
|
|
|
|
00D0 | 7C D3 6F 32 1D CD 78 29 ED 9C 9B CD 17 99 C8 A1
|
|
|
|
|
00E0 | 9F 39 F7 21 35 8A C0 58 1C E7 BF A9 5B E2 BD 84
|
|
|
|
|
00F0 | 0F A0 38 88 ED 2A 04 74 5B 29 10 E5 28 98 00 A4
|
|
|
|
|
0100 | 2B 3A 65 69 CE 9E AD 24 E7 ED 51 E4 4D 4D 1A CE
|
|
|
|
|
0110 | 7F 2C 12 1B 22 8E 58 4E 26 D6 98 D6 13 EC C0 CC
|
|
|
|
|
0120 | AE E7 2E 9A CA 01 BF 39 01 D9 40 27 32 7F D1 C1</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 66 CD 10 76 62 1B 9E 73 E9 F5 D2 63
|
|
|
|
|
0010 | 5F 0C 1A 01 26 AF A9 7C 5F D7 7F F1 E0 39 D1 40
|
|
|
|
|
0020 | 00 ED 24 1D 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 9B 35 B0 EE 11 89 9D 4E 05 82 2A 62 AE 8F BE 66
|
|
|
|
|
0040 | F7 60 54 8C FB 05 D1 37 B0 0A 90 B3 49 D0 FB 05
|
|
|
|
|
0050 | 3E 66 AB 85 CA 80 E7 34 79 60 D6 78 0C B7 9A 2F
|
|
|
|
|
0060 | EA 10 9E AC B1 2B CB E9 C8 D8 D6 6D B2 0C 4D 40
|
|
|
|
|
0070 | 47 5A DB BC FE B1 E5 E8 B3 46 BA 90 2E BE 0A E9
|
|
|
|
|
0080 | A0 0F B9 63 37 21 8A 46 E6 6C C5 32 3A E8 F8 8E
|
|
|
|
|
0090 | E8 14 70 7F A5 78 87 FF 01 0F EE 51 97 04 DE 88
|
|
|
|
|
00A0 | 05 6B 5C 3B DB F8 D9 11 DA 07 B2 E9 F6 15 C4 1C
|
|
|
|
|
00B0 | 49 5A 47 37 2A C3 E8 D5 60 4D 24 B2 C9 47 37 14
|
|
|
|
|
00C0 | 2C E8 FA 10 76 5C 75 75 CE A0 13 6B 3B 2F 17 CC
|
|
|
|
|
00D0 | 93 B2 CC 5C 46 EB 8C 74 16 CA FF D3 46 C9 78 4B
|
|
|
|
|
00E0 | 7A 3B 50 EE 2B 06 43 80 08 7F 3E 86 EB E9 C2 67
|
|
|
|
|
00F0 | 9D C1 F4 A2 38 C9 D2 76 60 FD E6 4C 53 79 8E C2
|
|
|
|
|
0100 | 3B BB 36 F6 02 44 1F 37 B2 F3 70 F1 F3 37 9D 0F
|
|
|
|
|
0110 | B5 7F CA 43 B9 A5 8B 4C A7 02 2E 65 8D 0D 93 84
|
|
|
|
|
0120 | 95 43 CA C4 6D DF B2 7D 6D DE D4 17 4D DA 97 CB</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 = BA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE000100A19FC9C0AB9D0660D1FC2A6F</code> <code>A650B68422641BE7BD061CC7D1F909B1</code> <code>2DF949E884D2FCD2F97E777C6583577F</code> <code>57F488AA8CEBF3F05C38194F9B9D1787</code> <code>4D33E6ED37A5CBE1E53693C99A031373</code> <code>44CD3BE2BF92090DB52AB1FDA3825E87</code> <code>9353A78BF6BC1C890301518C1E4E86A5</code> <code>B183A0B3A7C6F99AC6AC57DC42DCA8CE</code> <code>3FD1CE726F07D68AF73D5845CC0FD774</code> <code>6D11037D8BE9AF2F6B0726FDA1CEB97F</code> <code>309653E97CD36F321DCD7829ED9C9BCD</code> <code>1799C8A19F39F721358AC0581CE7BFA9</code> <code>5BE2BD840FA03888ED2A04745B2910E5</code> <code>289800A42B3A6569CE9EAD24E7ED51E4</code> <code>4D4D1ACE7F2C121B228E584E26D698D6</code> <code>13ECC0CCAEE72E9ACA01BF3901D94027</code><br> <code>327FD1C1</code></td>
|
|
|
|
|
<td><code>FE0001009B35B0EE11899D4E05822A62</code> <code>AE8FBE66F760548CFB05D137B00A90B3</code> <code>49D0FB053E66AB85CA80E7347960D678</code> <code>0CB79A2FEA109EACB12BCBE9C8D8D66D</code> <code>B20C4D40475ADBBCFEB1E5E8B346BA90</code> <code>2EBE0AE9A00FB96337218A46E66CC532</code> <code>3AE8F88EE814707FA57887FF010FEE51</code> <code>9704DE88056B5C3BDBF8D911DA07B2E9</code> <code>F615C41C495A47372AC3E8D5604D24B2</code> <code>C94737142CE8FA10765C7575CEA0136B</code> <code>3B2F17CC93B2CC5C46EB8C7416CAFFD3</code> <code>46C9784B7A3B50EE2B064380087F3E86</code> <code>EBE9C2679DC1F4A238C9D27660FDE64C</code> <code>53798EC23BBB36F602441F37B2F370F1</code> <code>F3379D0FB57FCA43B9A58B4CA7022E65</code> <code>8D0D93849543CAC46DDFB27D6DDED417</code><br> <code>4DDA97CB</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 = BA0D89B550042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F8
|
|
|
|
|
<!-- 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 = 54B6436650042280E4B67C3077D4A0C12D4D1EC1F2E4639D99B8105CA20D76A05FD11F840000000000000000FE000100A19FC9C0AB9D0660D1FC2A6FA650B68422641BE7BD061CC7D1F909B12DF949E884D2FCD2F97E777C6583577F57F488AA8CEBF3F05C38194F9B9D17874D33E6ED37A5CBE1E53693C99A03137344CD3BE2BF92090DB52AB1FDA3825E879353A78BF6BC1C890301518C1E4E86A5B183A0B3A7C6F99AC6AC57DC42DCA8CE3FD1CE726F07D68AF73D5845CC0FD7746D11037D8BE9AF2F6B0726FDA1CEB97F309653E97CD36F321DCD7829ED9C9BCD1799C8A19F39F721358AC0581CE7BFA95BE2BD840FA03888ED2A04745B2910E5289800A42B3A6569CE9EAD24E7ED51E44D4D1ACE7F2C121B228E584E26D698D613ECC0CCAEE72E9ACA01BF3901D94027327FD1C1
|
|
|
|
|
padding = B08362F89D08E0945C49D4B6
|
|
|
|
|
tmp_aes_key = 0862009CDA343B604C16E1FB67162F4A6E0328779435AE8B32B844D8B8AE1B27
|
|
|
|
|
tmp_aes_iv = D322BF7B0FE3405722AE697F94816E143A5EB539D3129610D71EA71C3C0C1014</code></pre>
|
|
|
|
|
<pre><code>data = 54B6436666CD1076621B9E73E9F5D2635F0C1A0126AFA97C5FD77FF1E039D14000ED241D0000000000000000FE0001009B35B0EE11899D4E05822A62AE8FBE66F760548CFB05D137B00A90B349D0FB053E66AB85CA80E7347960D6780CB79A2FEA109EACB12BCBE9C8D8D66DB20C4D40475ADBBCFEB1E5E8B346BA902EBE0AE9A00FB96337218A46E66CC5323AE8F88EE814707FA57887FF010FEE519704DE88056B5C3BDBF8D911DA07B2E9F615C41C495A47372AC3E8D5604D24B2C94737142CE8FA10765C7575CEA0136B3B2F17CC93B2CC5C46EB8C7416CAFFD346C9784B7A3B50EE2B064380087F3E86EBE9C2679DC1F4A238C9D27660FDE64C53798EC23BBB36F602441F37B2F370F1F3379D0FB57FCA43B9A58B4CA7022E658D0D93849543CAC46DDFB27D6DDED4174DDA97CB
|
|
|
|
|
padding = B646261505D593BCB4C1D796
|
|
|
|
|
tmp_aes_key = 9C9BB7C3AA015DBE62FE5577D0C089EF7C0A6EE4350CAC3BEE267C92AF846BBF
|
|
|
|
|
tmp_aes_iv = E8F23793463529F1EBDB9B64830F0D3FDD9F5AD447CBBFF257E7385F9A879B42</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 = 65DD9E82DAF5DC0BAE54B8E1A723406231C580667F99E9518EC40A39E8802005E98ADAC58E1C35E5B7BE7032B707818307FD5518D88BEC9AC84C57CA24813180AE0DDF16BE8AD5F03FB71E3C7958F5FA65995BAFF21375B309E52870BBE1C4D530B60983C584D3E1F6D91342CB6B22BB843B97825C9FFD0482F19055202254B1A8E5DBC1B7A40CC673845423358537D363B70F56466B3BC197FBCC15A336688F64FFE8072D8FF7BA9F1CEDC9E7A3EE4680522A9DE52B154D9528C2CE14A68ED1353E4657A386F758FE85A341A37C4A7451B1B1539D47CD846CC401B190E81F9D593D377E8B5313DF39A55230D69C983475231133456F645C69963F2C9E0EFC214577A3DFA62A2BF28E81439030A094627F3CC56127B6661EEE5247AE5D2FCA3BE86B07A43B434F8A474DBB5A0B66CDEE80AE6406A7D0E791A9F37AE5F9459C07D429C601A1352485D6AC5369F6AD623A</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = C533E5FB208024045491BC78D56FDCA13C02E9C40463BC90AB7A97D62D44445686762FCB33E2E286AB1A9186B0CDD436892E970DCE565F34D8EAAEB72E11B615E4ED0C6871577AE4ED5A8AB10BE7BCB31CA00E9902CF33DC26D9571B02AC2D2E8827BEE24CE00513CC95BD39B8B705597A05CDEBBEFD4FBABA1EB72B6DC628ACB7B0CBCD9DDD511E98B93C7671E74B7F3667A04DAF15D4C613A64E4F5870E1CF5027D199C4D95394A3A7E7AFD371CE9045E0DAF48C1C48AEC248A51363C6401CCE30EA0B2A5EB41F5112FCBC58AB40369BF0153A880D54B1634114E47FCCD12C76486F9621C98B2B963CE0CA37E23A0017DC61E8778F544A8167C8DE3A1067EFC53B064D0578F2D3D867B562D027FBE20E08D4AD3232922A95E9C2BFF803F7E80B814969297B1D380084DD21C39C7B78A497CEFA2E9F167595DB499B6661B0AC0E339CB57F9F7ED64433A7806FAB7B29</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 34 5A 00 00 B2 3F A1 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 50 04 22 80 E4 B6 7C 30
|
|
|
|
|
0020 | 77 D4 A0 C1 2D 4D 1E C1 F2 E4 63 9D 99 B8 10 5C
|
|
|
|
|
0030 | A2 0D 76 A0 5F D1 1F 84 FE 50 01 00 65 DD 9E 82
|
|
|
|
|
0040 | DA F5 DC 0B AE 54 B8 E1 A7 23 40 62 31 C5 80 66
|
|
|
|
|
0050 | 7F 99 E9 51 8E C4 0A 39 E8 80 20 05 E9 8A DA C5
|
|
|
|
|
0060 | 8E 1C 35 E5 B7 BE 70 32 B7 07 81 83 07 FD 55 18
|
|
|
|
|
0070 | D8 8B EC 9A C8 4C 57 CA 24 81 31 80 AE 0D DF 16
|
|
|
|
|
0080 | BE 8A D5 F0 3F B7 1E 3C 79 58 F5 FA 65 99 5B AF
|
|
|
|
|
0090 | F2 13 75 B3 09 E5 28 70 BB E1 C4 D5 30 B6 09 83
|
|
|
|
|
00A0 | C5 84 D3 E1 F6 D9 13 42 CB 6B 22 BB 84 3B 97 82
|
|
|
|
|
00B0 | 5C 9F FD 04 82 F1 90 55 20 22 54 B1 A8 E5 DB C1
|
|
|
|
|
00C0 | B7 A4 0C C6 73 84 54 23 35 85 37 D3 63 B7 0F 56
|
|
|
|
|
00D0 | 46 6B 3B C1 97 FB CC 15 A3 36 68 8F 64 FF E8 07
|
|
|
|
|
00E0 | 2D 8F F7 BA 9F 1C ED C9 E7 A3 EE 46 80 52 2A 9D
|
|
|
|
|
00F0 | E5 2B 15 4D 95 28 C2 CE 14 A6 8E D1 35 3E 46 57
|
|
|
|
|
0100 | A3 86 F7 58 FE 85 A3 41 A3 7C 4A 74 51 B1 B1 53
|
|
|
|
|
0110 | 9D 47 CD 84 6C C4 01 B1 90 E8 1F 9D 59 3D 37 7E
|
|
|
|
|
0120 | 8B 53 13 DF 39 A5 52 30 D6 9C 98 34 75 23 11 33
|
|
|
|
|
0130 | 45 6F 64 5C 69 96 3F 2C 9E 0E FC 21 45 77 A3 DF
|
|
|
|
|
0140 | A6 2A 2B F2 8E 81 43 90 30 A0 94 62 7F 3C C5 61
|
|
|
|
|
0150 | 27 B6 66 1E EE 52 47 AE 5D 2F CA 3B E8 6B 07 A4
|
|
|
|
|
0160 | 3B 43 4F 8A 47 4D BB 5A 0B 66 CD EE 80 AE 64 06
|
|
|
|
|
0170 | A7 D0 E7 91 A9 F3 7A E5 F9 45 9C 07 D4 29 C6 01
|
|
|
|
|
0180 | A1 35 24 85 D6 AC 53 69 F6 AD 62 3A</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 80 14 01 00 7C 43 A1 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 66 CD 10 76 62 1B 9E 73
|
|
|
|
|
0020 | E9 F5 D2 63 5F 0C 1A 01 26 AF A9 7C 5F D7 7F F1
|
|
|
|
|
0030 | E0 39 D1 40 00 ED 24 1D FE 50 01 00 C5 33 E5 FB
|
|
|
|
|
0040 | 20 80 24 04 54 91 BC 78 D5 6F DC A1 3C 02 E9 C4
|
|
|
|
|
0050 | 04 63 BC 90 AB 7A 97 D6 2D 44 44 56 86 76 2F CB
|
|
|
|
|
0060 | 33 E2 E2 86 AB 1A 91 86 B0 CD D4 36 89 2E 97 0D
|
|
|
|
|
0070 | CE 56 5F 34 D8 EA AE B7 2E 11 B6 15 E4 ED 0C 68
|
|
|
|
|
0080 | 71 57 7A E4 ED 5A 8A B1 0B E7 BC B3 1C A0 0E 99
|
|
|
|
|
0090 | 02 CF 33 DC 26 D9 57 1B 02 AC 2D 2E 88 27 BE E2
|
|
|
|
|
00A0 | 4C E0 05 13 CC 95 BD 39 B8 B7 05 59 7A 05 CD EB
|
|
|
|
|
00B0 | BE FD 4F BA BA 1E B7 2B 6D C6 28 AC B7 B0 CB CD
|
|
|
|
|
00C0 | 9D DD 51 1E 98 B9 3C 76 71 E7 4B 7F 36 67 A0 4D
|
|
|
|
|
00D0 | AF 15 D4 C6 13 A6 4E 4F 58 70 E1 CF 50 27 D1 99
|
|
|
|
|
00E0 | C4 D9 53 94 A3 A7 E7 AF D3 71 CE 90 45 E0 DA F4
|
|
|
|
|
00F0 | 8C 1C 48 AE C2 48 A5 13 63 C6 40 1C CE 30 EA 0B
|
|
|
|
|
0100 | 2A 5E B4 1F 51 12 FC BC 58 AB 40 36 9B F0 15 3A
|
|
|
|
|
0110 | 88 0D 54 B1 63 41 14 E4 7F CC D1 2C 76 48 6F 96
|
|
|
|
|
0120 | 21 C9 8B 2B 96 3C E0 CA 37 E2 3A 00 17 DC 61 E8
|
|
|
|
|
0130 | 77 8F 54 4A 81 67 C8 DE 3A 10 67 EF C5 3B 06 4D
|
|
|
|
|
0140 | 05 78 F2 D3 D8 67 B5 62 D0 27 FB E2 0E 08 D4 AD
|
|
|
|
|
0150 | 32 32 92 2A 95 E9 C2 BF F8 03 F7 E8 0B 81 49 69
|
|
|
|
|
0160 | 29 7B 1D 38 00 84 DD 21 C3 9C 7B 78 A4 97 CE FA
|
|
|
|
|
0170 | 2E 9F 16 75 95 DB 49 9B 66 61 B0 AC 0E 33 9C B5
|
|
|
|
|
0180 | 7F 9F 7E D6 44 33 A7 80 6F AB 7B 29</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>345A0000B23FA166</code></td>
|
|
|
|
|
<td><code>801401007C43A166</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>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE50010065DD9E82DAF5DC0BAE54B8E1</code> <code>A723406231C580667F99E9518EC40A39</code> <code>E8802005E98ADAC58E1C35E5B7BE7032</code> <code>B707818307FD5518D88BEC9AC84C57CA</code> <code>24813180AE0DDF16BE8AD5F03FB71E3C</code> <code>7958F5FA65995BAFF21375B309E52870</code> <code>BBE1C4D530B60983C584D3E1F6D91342</code> <code>CB6B22BB843B97825C9FFD0482F19055</code> <code>202254B1A8E5DBC1B7A40CC673845423</code> <code>358537D363B70F56466B3BC197FBCC15</code> <code>A336688F64FFE8072D8FF7BA9F1CEDC9</code> <code>E7A3EE4680522A9DE52B154D9528C2CE</code> <code>14A68ED1353E4657A386F758FE85A341</code> <code>A37C4A7451B1B1539D47CD846CC401B1</code> <code>90E81F9D593D377E8B5313DF39A55230</code> <code>D69C983475231133456F645C69963F2C</code> <code>9E0EFC214577A3DFA62A2BF28E814390</code> <code>30A094627F3CC56127B6661EEE5247AE</code> <code>5D2FCA3BE86B07A43B434F8A474DBB5A</code> <code>0B66CDEE80AE6406A7D0E791A9F37AE5</code> <code>F9459C07D429C601A1352485D6AC5369</code><br> <code>F6AD623A</code></td>
|
|
|
|
|
<td><code>FE500100C533E5FB208024045491BC78</code> <code>D56FDCA13C02E9C40463BC90AB7A97D6</code> <code>2D44445686762FCB33E2E286AB1A9186</code> <code>B0CDD436892E970DCE565F34D8EAAEB7</code> <code>2E11B615E4ED0C6871577AE4ED5A8AB1</code> <code>0BE7BCB31CA00E9902CF33DC26D9571B</code> <code>02AC2D2E8827BEE24CE00513CC95BD39</code> <code>B8B705597A05CDEBBEFD4FBABA1EB72B</code> <code>6DC628ACB7B0CBCD9DDD511E98B93C76</code> <code>71E74B7F3667A04DAF15D4C613A64E4F</code> <code>5870E1CF5027D199C4D95394A3A7E7AF</code> <code>D371CE9045E0DAF48C1C48AEC248A513</code> <code>63C6401CCE30EA0B2A5EB41F5112FCBC</code> <code>58AB40369BF0153A880D54B1634114E4</code> <code>7FCCD12C76486F9621C98B2B963CE0CA</code> <code>37E23A0017DC61E8778F544A8167C8DE</code> <code>3A1067EFC53B064D0578F2D3D867B562</code> <code>D027FBE20E08D4AD3232922A95E9C2BF</code> <code>F803F7E80B814969297B1D380084DD21</code> <code>C39C7B78A497CEFA2E9F167595DB499B</code> <code>6661B0AC0E339CB57F9F7ED64433A780</code><br> <code>6FAB7B29</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 = 7E5156146BF2D2DDE7418F5C735C5F082962E97EF2B9B04670CD5FB3D7A94251D285D0076530C55AE95E214271371E4DB14A1CD9139C0C06E3E094C089C536C4E09CF0FDA412F6E8EA118AF0500CC2F52E1999EB80286E3A0E96E975D02DEA483171812CE30E33DF2FB30B684F4338C80BBB8EC73373CCE122DF4EEC43487720D6606C4825D17FB08EB103056D65AB77177C2B182714082187325AC1ABEA620C2FEF4F8E33B43DDF9A826C0E58657DEFC195461CA906600C66102E2F61C773E92D00FA00C37FA9A424467006BEA612364A046F40B64681677C1E1C144B8D7C60255747A1E99284D98ACDAC8DD05470AEB777E371288A5E7285AB82CB39F736A5</code></pre>
|
|
|
|
|
<pre><code>auth_key = 4276EF1032C70A4E35670EAF0E50151FFD3EC40D76DDFB6F1E034ABDAB81639D82E7E7CF136998ED3BEE8043BFD2B9E4D6BCCBD454C8B1981A215ADA694516C6E63F033D3243FC8309FA37441C1BC7FE9F478B463A99ADB3A9AD3A05C31946E23641A2EFD932AA92B3FA945381F4CD242FCBF7B5405C01B770D116531F94282DBA1B8D084326527D7CA31D38A3E8609CB9E5E2550C34C5FF1B48F007C9548CEF02786EA179FA31C30EF2487116C5EF267994F77E79D851E5A0D73A50AC6A706D19B941A6630EA092A4EB238EA3255CBCF02B32DE812DD69C93B49DD1EEE0DED53FC31698CA918BB51099E1FD514657228CC46FDAF446EBFC428CAE931B6725ED</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 24 35 2E B3 3F A1 66
|
|
|
|
|
0010 | 34 00 00 00 34 F7 CB 3B 50 04 22 80 E4 B6 7C 30
|
|
|
|
|
0020 | 77 D4 A0 C1 2D 4D 1E C1 F2 E4 63 9D 99 B8 10 5C
|
|
|
|
|
0030 | A2 0D 76 A0 5F D1 1F 84 02 19 CE AD 56 AF EB A2
|
|
|
|
|
0040 | C0 3B 7C 92 B3 63 97 D0</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 90 46 C9 7C 43 A1 66
|
|
|
|
|
0010 | 3C 00 00 00 34 F7 CB 3B 66 CD 10 76 62 1B 9E 73
|
|
|
|
|
0020 | E9 F5 D2 63 5F 0C 1A 01 26 AF A9 7C 5F D7 7F F1
|
|
|
|
|
0030 | E0 39 D1 40 00 ED 24 1D 68 01 01 49 64 44 91 E7
|
|
|
|
|
0040 | 76 C7 E3 8A 54 E3 33 F9</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>0124352EB33FA166</code></td>
|
|
|
|
|
<td><code>019046C97C43A166</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>34000000</code> (52 in decimal)</td>
|
|
|
|
|
<td><code>3C000000</code> (60 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>50042280E4B67C3077D4A0C12D4D1EC1</code></td>
|
|
|
|
|
<td><code>66CD1076621B9E73E9F5D2635F0C1A01</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>F2E4639D99B8105CA20D76A05FD11F84</code></td>
|
|
|
|
|
<td><code>26AFA97C5FD77FF1E039D14000ED241D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>0219CEAD56AFEBA2C03B7C92B36397D0</code></td>
|
|
|
|
|
<td><code>68010149644491E776C7E38A54E333F9</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>
|
|
|
|
|