|
|
|
@ -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 5C 54 07 00 D5 7C AE 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 98 34 7C 45 20 EB E0 DA
|
|
|
|
|
0020 | DB F9 DE F5 87 F6 3A 18</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 D0 C8 05 00 83 62 AF 66
|
|
|
|
|
0010 | 14 00 00 00 F1 8E 7E BE 9A 35 B3 4B AD 37 DF 53
|
|
|
|
|
0020 | 8D 3F E4 B7 DC 8C 94 D7</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>5C540700D57CAE66</code></td>
|
|
|
|
|
<td><code>D0C805008362AF66</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>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</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 74 90 DB D5 7C AE 66
|
|
|
|
|
0010 | C8 00 00 00 63 24 16 05 98 34 7C 45 20 EB E0 DA
|
|
|
|
|
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
|
|
|
|
|
0030 | 91 D9 0C C3 31 3C FE D2 08 0F A1 9D 05 A1 83 1A
|
|
|
|
|
0040 | 5D 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 D8 2A D9 83 62 AF 66
|
|
|
|
|
0010 | 88 00 00 00 63 24 16 05 9A 35 B3 4B AD 37 DF 53
|
|
|
|
|
0020 | 8D 3F E4 B7 DC 8C 94 D7 FC F3 12 95 0D 42 D9 8F
|
|
|
|
|
0030 | 97 8F 0D F9 3C CE CD 0D 08 16 52 EC 42 45 C3 94
|
|
|
|
|
0040 | 17 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>017490DBD57CAE66</code></td>
|
|
|
|
|
<td><code>01D82AD98362AF66</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>C8000000</code> (200 in decimal)</td>
|
|
|
|
|
<td><code>88000000</code> (136 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -150,19 +150,19 @@
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Server-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>56, 12</td>
|
|
|
|
|
<td><code>080FA19D05A1831A5D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1126354029329455709</td>
|
|
|
|
|
<td><code>081652EC4245C39417000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1608607786307130391</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 = 1126354029329455709</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1126354029329455709 = 1047794147 * 1074976447</code></p>
|
|
|
|
|
<pre><code>p = 1047794147
|
|
|
|
|
q = 1074976447</code></pre>
|
|
|
|
|
<pre><code>pq = 1608607786307130391</code></pre>
|
|
|
|
|
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1608607786307130391 = 1026890237 * 1566484643</code></p>
|
|
|
|
|
<pre><code>p = 1026890237
|
|
|
|
|
q = 1566484643</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 0F A1 9D 05 A1 83 1A 5D 00 00 00
|
|
|
|
|
0010 | 04 3E 74 11 E3 00 00 00 04 40 12 D6 BF 00 00 00
|
|
|
|
|
0020 | 98 34 7C 45 20 EB E0 DA DB F9 DE F5 87 F6 3A 18
|
|
|
|
|
0030 | 9A 91 88 40 20 68 F2 31 91 D9 0C C3 31 3C FE D2
|
|
|
|
|
0040 | 87 3C C6 12 C1 7A 98 30 AA 40 41 18 56 12 8B 15
|
|
|
|
|
0050 | 2A A6 92 41 8A D8 FC 3B 6A 7E C1 BA DF 1A 7C C3
|
|
|
|
|
<pre><code>0000 | 95 5F F5 A9 08 16 52 EC 42 45 C3 94 17 00 00 00
|
|
|
|
|
0010 | 04 3D 35 19 FD 00 00 00 04 5D 5E A8 A3 00 00 00
|
|
|
|
|
0020 | 9A 35 B3 4B AD 37 DF 53 8D 3F E4 B7 DC 8C 94 D7
|
|
|
|
|
0030 | FC F3 12 95 0D 42 D9 8F 97 8F 0D F9 3C CE CD 0D
|
|
|
|
|
0040 | 64 DE E6 08 6B D1 2D 2F 2F 98 BD 03 BA 95 2F 73
|
|
|
|
|
0050 | 17 64 D2 DA BE 11 15 9D 7F 79 DE 4F 20 7E 90 95
|
|
|
|
|
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 = 1074976447</code></pre>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>pq</td>
|
|
|
|
|
<td>4, 12</td>
|
|
|
|
|
<td><code>080FA19D05A1831A5D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1126354029329455709</td>
|
|
|
|
|
<td><code>081652EC4245C39417000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1608607786307130391</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>043E7411E3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1047794147</td>
|
|
|
|
|
<td><code>043D3519FD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1026890237</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>044012D6BF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1074976447</td>
|
|
|
|
|
<td><code>045D5EA8A3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1566484643</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>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>48, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce</td>
|
|
|
|
|
<td>64, 32</td>
|
|
|
|
|
<td><code>873CC612C17A9830AA40411856128B15</code> <code>2AA692418AD8FC3B6A7EC1BADF1A7CC3</code></td>
|
|
|
|
|
<td><code>64DEE6086BD12D2F2F98BD03BA952F73</code> <code>1764D2DABE11159D7F79DE4F207E9095</code></td>
|
|
|
|
|
<td>Client-generated random number</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -291,39 +291,39 @@ q = 1074976447</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 = 955FF5A9080FA19D05A1831A5D000000043E7411E3000000044012D6BF00000098347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED2873CC612C17A9830AA40411856128B152AA692418AD8FC3B6A7EC1BADF1A7CC302000000
|
|
|
|
|
random_padding_bytes = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E30543E01D2AEE50E0509B7B25B659285ADB3350478DAEF8C11A5874B34457496D65B199A44C7D18D3C80DFDB21583C46B736C8A59CB332E6E79287F6B492787A60</code></pre>
|
|
|
|
|
<pre><code>data = 955FF5A9081652EC4245C39417000000043D3519FD000000045D5EA8A30000009A35B34BAD37DF538D3FE4B7DC8C94D7FCF312950D42D98F978F0DF93CCECD0D64DEE6086BD12D2F2F98BD03BA952F731764D2DABE11159D7F79DE4F207E909502000000
|
|
|
|
|
random_padding_bytes = 8A67E36645FBD128F8E52F34286EF152CB04D2F5D331C9F12258B89097D5D09A37D9100D0111B5150284DA53304C37B2474F3770FF6D35CA6AB70457C2EB908CE6713F6996CA19390DDFC09BEE1F52B55A695C124AFDE6AD132A3114</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 = 46735142BBFC6C0924570D4792BAB3D3BEF366EB9B3F86167B5969A72E7487968CE37FEE44C7F4AE17558F5411BBB3AFBB4DC21B1823FA6999BD922FF19D382E81E37D3F2EEBF7D15255FF4AFD95B010F7AB894AC4F234014A0A89EEF9DCA7C8E4132D831D7415877C3BC90C02CB17B7FA6038ED76ED61F7AEB2308B3D21CC9EDF4D70D370E176FD93AA1482E9654066CFB656FC9BD6106A3D549AD1A99E2CC5EEBE8AE699B6C1779F5CBC3791F8AF238673E9EBCD48BE5A19635F110567E5A5DE7439B7012E8425F3F0A65B0268A0DB12D2BFABE38558094C8B0E3989DD4ACBEA3952FE16ACB334C23047E2114414B2A2BD43A7AD2A365C86879ABCEBFE417A</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = 0F998343F41D78FA23AD6BA99DDF7C1912501694F4D9C8FD74841C5CA825621ED1BF7C57567FC5BAA8476FAD07F5481C40D531BECFC52FEDD440099249C37B3BF81750F1D99A7B348449067C5C74D7B05D4BDBFD80ABB830036D32B23E57B3AFA22E3A423DE9DE638815956A8DB44D695DA8413C004BF7179404713C473A8C6BEEDFB8E5A58A185E2FE13EC0103936D752518E0290F080A20B3C03D067F026BEAF64010EAC9A69AD9744231F96BD8D73C2A7431C65BB7CC1A8312366BE6A45A943DDF0DBE99DB2B980373500F1738F0B1D63CA1195071CA4ABADFFA20F239B81387FCB54BE197075FE4D7CD0A706A91B226A12E2FB5EAA9D401375E2CF4800C1</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 14 15 0C 00 D6 7C AE 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 98 34 7C 45 20 EB E0 DA
|
|
|
|
|
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
|
|
|
|
|
0030 | 91 D9 0C C3 31 3C FE D2 04 3E 74 11 E3 00 00 00
|
|
|
|
|
0040 | 04 40 12 D6 BF 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 46 73 51 42 BB FC 6C 09 24 57 0D 47
|
|
|
|
|
0060 | 92 BA B3 D3 BE F3 66 EB 9B 3F 86 16 7B 59 69 A7
|
|
|
|
|
0070 | 2E 74 87 96 8C E3 7F EE 44 C7 F4 AE 17 55 8F 54
|
|
|
|
|
0080 | 11 BB B3 AF BB 4D C2 1B 18 23 FA 69 99 BD 92 2F
|
|
|
|
|
0090 | F1 9D 38 2E 81 E3 7D 3F 2E EB F7 D1 52 55 FF 4A
|
|
|
|
|
00A0 | FD 95 B0 10 F7 AB 89 4A C4 F2 34 01 4A 0A 89 EE
|
|
|
|
|
00B0 | F9 DC A7 C8 E4 13 2D 83 1D 74 15 87 7C 3B C9 0C
|
|
|
|
|
00C0 | 02 CB 17 B7 FA 60 38 ED 76 ED 61 F7 AE B2 30 8B
|
|
|
|
|
00D0 | 3D 21 CC 9E DF 4D 70 D3 70 E1 76 FD 93 AA 14 82
|
|
|
|
|
00E0 | E9 65 40 66 CF B6 56 FC 9B D6 10 6A 3D 54 9A D1
|
|
|
|
|
00F0 | A9 9E 2C C5 EE BE 8A E6 99 B6 C1 77 9F 5C BC 37
|
|
|
|
|
0100 | 91 F8 AF 23 86 73 E9 EB CD 48 BE 5A 19 63 5F 11
|
|
|
|
|
0110 | 05 67 E5 A5 DE 74 39 B7 01 2E 84 25 F3 F0 A6 5B
|
|
|
|
|
0120 | 02 68 A0 DB 12 D2 BF AB E3 85 58 09 4C 8B 0E 39
|
|
|
|
|
0130 | 89 DD 4A CB EA 39 52 FE 16 AC B3 34 C2 30 47 E2
|
|
|
|
|
0140 | 11 44 14 B2 A2 BD 43 A7 AD 2A 36 5C 86 87 9A BC
|
|
|
|
|
0150 | EB FE 41 7A</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 CC BA 07 00 83 62 AF 66
|
|
|
|
|
0010 | 40 01 00 00 BE E4 12 D7 9A 35 B3 4B AD 37 DF 53
|
|
|
|
|
0020 | 8D 3F E4 B7 DC 8C 94 D7 FC F3 12 95 0D 42 D9 8F
|
|
|
|
|
0030 | 97 8F 0D F9 3C CE CD 0D 04 3D 35 19 FD 00 00 00
|
|
|
|
|
0040 | 04 5D 5E A8 A3 00 00 00 85 FD 64 DE 85 1D 9D D0
|
|
|
|
|
0050 | FE 00 01 00 0F 99 83 43 F4 1D 78 FA 23 AD 6B A9
|
|
|
|
|
0060 | 9D DF 7C 19 12 50 16 94 F4 D9 C8 FD 74 84 1C 5C
|
|
|
|
|
0070 | A8 25 62 1E D1 BF 7C 57 56 7F C5 BA A8 47 6F AD
|
|
|
|
|
0080 | 07 F5 48 1C 40 D5 31 BE CF C5 2F ED D4 40 09 92
|
|
|
|
|
0090 | 49 C3 7B 3B F8 17 50 F1 D9 9A 7B 34 84 49 06 7C
|
|
|
|
|
00A0 | 5C 74 D7 B0 5D 4B DB FD 80 AB B8 30 03 6D 32 B2
|
|
|
|
|
00B0 | 3E 57 B3 AF A2 2E 3A 42 3D E9 DE 63 88 15 95 6A
|
|
|
|
|
00C0 | 8D B4 4D 69 5D A8 41 3C 00 4B F7 17 94 04 71 3C
|
|
|
|
|
00D0 | 47 3A 8C 6B EE DF B8 E5 A5 8A 18 5E 2F E1 3E C0
|
|
|
|
|
00E0 | 10 39 36 D7 52 51 8E 02 90 F0 80 A2 0B 3C 03 D0
|
|
|
|
|
00F0 | 67 F0 26 BE AF 64 01 0E AC 9A 69 AD 97 44 23 1F
|
|
|
|
|
0100 | 96 BD 8D 73 C2 A7 43 1C 65 BB 7C C1 A8 31 23 66
|
|
|
|
|
0110 | BE 6A 45 A9 43 DD F0 DB E9 9D B2 B9 80 37 35 00
|
|
|
|
|
0120 | F1 73 8F 0B 1D 63 CA 11 95 07 1C A4 AB AD FF A2
|
|
|
|
|
0130 | 0F 23 9B 81 38 7F CB 54 BE 19 70 75 FE 4D 7C D0
|
|
|
|
|
0140 | A7 06 A9 1B 22 6A 12 E2 FB 5E AA 9D 40 13 75 E2
|
|
|
|
|
0150 | CF 48 00 C1</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 = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E305
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>14150C00D67CAE66</code></td>
|
|
|
|
|
<td><code>CCBA07008362AF66</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 = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E305
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>p</td>
|
|
|
|
|
<td>56, 8</td>
|
|
|
|
|
<td><code>043E7411E3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1047794147</td>
|
|
|
|
|
<td><code>043D3519FD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1026890237</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>044012D6BF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1074976447</td>
|
|
|
|
|
<td><code>045D5EA8A3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1566484643</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 = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E305
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>80, 260</td>
|
|
|
|
|
<td><code>FE00010046735142BBFC6C0924570D47</code> <code>92BAB3D3BEF366EB9B3F86167B5969A7</code> <code>2E7487968CE37FEE44C7F4AE17558F54</code> <code>11BBB3AFBB4DC21B1823FA6999BD922F</code> <code>F19D382E81E37D3F2EEBF7D15255FF4A</code> <code>FD95B010F7AB894AC4F234014A0A89EE</code> <code>F9DCA7C8E4132D831D7415877C3BC90C</code> <code>02CB17B7FA6038ED76ED61F7AEB2308B</code> <code>3D21CC9EDF4D70D370E176FD93AA1482</code> <code>E9654066CFB656FC9BD6106A3D549AD1</code> <code>A99E2CC5EEBE8AE699B6C1779F5CBC37</code> <code>91F8AF238673E9EBCD48BE5A19635F11</code> <code>0567E5A5DE7439B7012E8425F3F0A65B</code> <code>0268A0DB12D2BFABE38558094C8B0E39</code> <code>89DD4ACBEA3952FE16ACB334C23047E2</code> <code>114414B2A2BD43A7AD2A365C86879ABC</code><br> <code>EBFE417A</code></td>
|
|
|
|
|
<td><code>FE0001000F998343F41D78FA23AD6BA9</code> <code>9DDF7C1912501694F4D9C8FD74841C5C</code> <code>A825621ED1BF7C57567FC5BAA8476FAD</code> <code>07F5481C40D531BECFC52FEDD4400992</code> <code>49C37B3BF81750F1D99A7B348449067C</code> <code>5C74D7B05D4BDBFD80ABB830036D32B2</code> <code>3E57B3AFA22E3A423DE9DE638815956A</code> <code>8DB44D695DA8413C004BF7179404713C</code> <code>473A8C6BEEDFB8E5A58A185E2FE13EC0</code> <code>103936D752518E0290F080A20B3C03D0</code> <code>67F026BEAF64010EAC9A69AD9744231F</code> <code>96BD8D73C2A7431C65BB7CC1A8312366</code> <code>BE6A45A943DDF0DBE99DB2B980373500</code> <code>F1738F0B1D63CA1195071CA4ABADFFA2</code> <code>0F239B81387FCB54BE197075FE4D7CD0</code> <code>A706A91B226A12E2FB5EAA9D401375E2</code><br> <code>CF4800C1</code></td>
|
|
|
|
|
<td>Value generated above</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -402,47 +402,47 @@ random_padding_bytes = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E305
|
|
|
|
|
<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 8C 73 A4 D6 7C AE 66
|
|
|
|
|
0010 | B8 02 00 00 5C 07 E8 D0 98 34 7C 45 20 EB E0 DA
|
|
|
|
|
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
|
|
|
|
|
0030 | 91 D9 0C C3 31 3C FE D2 FE 50 02 00 F1 03 E3 4D
|
|
|
|
|
0040 | 57 63 16 DC 3A 7E 00 30 86 5E D0 4F A6 29 83 96
|
|
|
|
|
0050 | 12 B9 5E D3 78 F8 BB A2 F7 6A 07 1B D1 F0 E7 51
|
|
|
|
|
0060 | C5 74 41 ED F5 1E C1 96 3F 9C 88 69 EF 96 F1 58
|
|
|
|
|
0070 | 78 B1 2D 3A 1A 67 C9 4E B2 DF D6 A2 D7 C0 A0 89
|
|
|
|
|
0080 | 90 F1 EF C7 60 9A EC 68 12 75 32 6F 16 81 CD F5
|
|
|
|
|
0090 | 7F 90 F1 DE 61 0C 79 31 1C 4C EC 4D 07 75 D3 39
|
|
|
|
|
00A0 | 4B 3F 8B BD 47 F5 0E F1 0D A9 A3 36 38 9A 25 9E
|
|
|
|
|
00B0 | 6A F9 CA D0 26 83 AE 29 24 57 52 F0 88 08 1D 1F
|
|
|
|
|
00C0 | 79 49 69 86 51 E7 59 E1 EF F9 74 E4 FF 3A 21 AA
|
|
|
|
|
00D0 | F3 E7 3C 92 E2 CF 7C FB F2 46 0D ED 2D 83 B1 A6
|
|
|
|
|
00E0 | A7 AC 31 C8 D0 93 F1 FA 4E 19 22 03 59 CA 59 39
|
|
|
|
|
00F0 | 5F EF 93 9D C3 DD D5 48 C3 CE 9E F6 8A FD 99 48
|
|
|
|
|
0100 | 8A 70 34 CC 0F CE 55 C7 F1 62 39 C1 82 AE A5 AF
|
|
|
|
|
0110 | 96 54 64 B6 C7 7B CC 47 C2 04 2D 4D 1A 8D 6E 00
|
|
|
|
|
0120 | F5 25 68 D5 1B 30 08 8C 12 3C 0C 25 A9 56 A5 9C
|
|
|
|
|
0130 | 8D 35 87 EA 9A 0B 8C 1E 81 46 75 87 4C 1D 92 8E
|
|
|
|
|
0140 | 0A 92 A0 6E CF 5B EC 44 C2 53 8D 05 A1 D6 DC 87
|
|
|
|
|
0150 | BB 72 48 C8 DD 8A 86 B0 68 5B 75 AC B4 79 A4 A9
|
|
|
|
|
0160 | BC DB 51 A7 9D D5 AA F5 51 64 69 A5 2A 47 93 A2
|
|
|
|
|
0170 | 77 C3 9B 08 D8 FB 5C 55 58 EB 38 44 5E 78 CD FF
|
|
|
|
|
0180 | C3 41 8F A5 BC 6D 3F 22 E6 75 EF 65 A1 9D 4C 34
|
|
|
|
|
0190 | F8 0D 11 CF 45 90 6E AB 4B 4D 4E 94 12 97 67 89
|
|
|
|
|
01A0 | DD 90 51 99 40 3A C5 86 A3 F2 58 0F 7F 9E BC 86
|
|
|
|
|
01B0 | F9 1B 78 F8 E7 5B 0A 89 A6 5E 71 EB 90 F4 D7 9A
|
|
|
|
|
01C0 | FA B7 CF 44 B1 C9 93 16 2F 38 E1 D7 6E EA 16 20
|
|
|
|
|
01D0 | E5 29 4B A9 FB A3 26 6A 58 C8 D2 92 E8 2E 6D E7
|
|
|
|
|
01E0 | DA D3 06 4D 0C 70 EB 8E AD B9 80 23 B7 83 AF BD
|
|
|
|
|
01F0 | 11 CE AD 10 3F 31 99 8E 43 DB 27 04 F8 92 AC EA
|
|
|
|
|
0200 | 10 08 0B 02 6A CB 12 17 90 D4 AA E7 4A 95 19 BB
|
|
|
|
|
0210 | 9F 1F 5C BA 8F 55 DB A2 90 57 FA 22 41 76 BB D9
|
|
|
|
|
0220 | 6F 4B 8F 0A 8E 98 9A 5A 3B 4D 9F 5B 39 70 F9 34
|
|
|
|
|
0230 | D2 0A E9 39 89 FE 13 B0 E4 87 17 06 B5 0E C9 B7
|
|
|
|
|
0240 | 61 38 9F D0 25 65 E2 C8 49 39 69 90 3D 13 A7 F8
|
|
|
|
|
0250 | 3A 7C 0E 69 5F 69 76 7A E0 91 C4 10 0E 50 45 84
|
|
|
|
|
0260 | 6F B8 CD FD 85 6A 4D A3 DD DF 8F 5E 90 09 DC 1D
|
|
|
|
|
0270 | F0 C9 F2 43 6A 77 06 7F 56 A1 D2 C0 04 E3 97 C3
|
|
|
|
|
0280 | 15 3C CA 8B E1 A3 6E 29 DD 8D FA AB</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 2C D4 80 84 62 AF 66
|
|
|
|
|
0010 | B0 02 00 00 5C 07 E8 D0 9A 35 B3 4B AD 37 DF 53
|
|
|
|
|
0020 | 8D 3F E4 B7 DC 8C 94 D7 FC F3 12 95 0D 42 D9 8F
|
|
|
|
|
0030 | 97 8F 0D F9 3C CE CD 0D FE 50 02 00 76 59 D3 CA
|
|
|
|
|
0040 | ED AC 06 88 21 96 6A 4E 0F AC 9A F2 47 6E 26 85
|
|
|
|
|
0050 | 58 04 6D ED 9D 77 5B 41 E5 54 9E 34 1E A2 FB E9
|
|
|
|
|
0060 | 06 D8 F6 A9 FF CE E5 F7 F9 3E 2C AF D4 9D 0F 3E
|
|
|
|
|
0070 | A7 F8 0C A5 99 B9 05 9B 06 3D 1F D2 E8 0A 03 2E
|
|
|
|
|
0080 | 19 4F D3 85 E0 3D 49 7A 41 0E B0 8A E6 91 72 AC
|
|
|
|
|
0090 | 3E 30 81 D3 4D 4E E0 BD BC C1 A6 01 2C 74 65 42
|
|
|
|
|
00A0 | EF 08 A2 08 1B 3C A9 BC 7B 59 A1 CD 2C AC DD 4A
|
|
|
|
|
00B0 | 50 97 3E D0 4E A6 12 28 FA E5 1B 86 A6 73 69 1E
|
|
|
|
|
00C0 | 50 D2 99 3B 51 B9 8E 5C 93 55 C1 F6 30 28 87 C6
|
|
|
|
|
00D0 | 48 FD A6 1F B4 1D 77 29 16 C6 02 E2 BB 9A 3F 31
|
|
|
|
|
00E0 | A9 9B D0 54 53 69 F5 FB 60 DB BA B0 64 1E 30 48
|
|
|
|
|
00F0 | C6 88 11 FB C1 8D A9 14 AE AF 26 30 AC 40 FC 0A
|
|
|
|
|
0100 | 89 30 86 75 BA 8E 97 D0 9D 5D D9 22 1A E5 76 05
|
|
|
|
|
0110 | 88 78 F5 9F EA 77 5D B7 FA 7A 63 0C 17 01 62 FE
|
|
|
|
|
0120 | F2 53 FC 7B DA 3A EB 8A AE 08 77 86 CF 44 13 42
|
|
|
|
|
0130 | 91 01 9E 65 0A 2A C9 B8 B4 9B D7 F0 C5 B8 2B 39
|
|
|
|
|
0140 | 52 B5 1F 47 9A 97 38 37 DE F2 CA 9F 54 29 E6 47
|
|
|
|
|
0150 | F0 AA 67 9C CC 17 3A CE 58 CC ED 56 9F 81 56 9B
|
|
|
|
|
0160 | 91 24 F8 D0 68 DC AF 37 36 DD E3 B1 63 22 49 27
|
|
|
|
|
0170 | 66 7D CE 1E BE 62 38 2B 60 B0 54 CD 05 CD 2E 63
|
|
|
|
|
0180 | 79 BA DD 5B 0E 26 82 8E F6 51 06 6B 0E 4D A8 64
|
|
|
|
|
0190 | EE F0 CC 81 28 21 49 0F 24 E1 26 6E AB 83 1C F4
|
|
|
|
|
01A0 | 92 CD 63 29 36 CD 37 DA 3C 09 F5 C3 0D 0E 0A 3F
|
|
|
|
|
01B0 | 91 3D 27 E6 B9 55 F9 52 19 B4 24 B1 E7 52 83 FB
|
|
|
|
|
01C0 | 75 7F 05 41 09 E8 50 FD 1D B9 71 0A 25 3B 2F 76
|
|
|
|
|
01D0 | 97 9E D4 8C 67 D8 2A E2 CD DC 85 3D 32 E4 15 9A
|
|
|
|
|
01E0 | A2 D1 94 0E 64 47 B1 EE 3D 82 7D CD 96 8A C7 8B
|
|
|
|
|
01F0 | 30 16 54 AD 77 3F FE 52 7B 27 E1 3B E3 D4 AE 65
|
|
|
|
|
0200 | 19 7A 70 9A 3A B5 EC 52 28 DB FB DF 6A 7A 77 60
|
|
|
|
|
0210 | 34 DB 76 01 6C 12 5D F5 5E FB A7 CA F1 C3 0B 1D
|
|
|
|
|
0220 | 6A 83 21 26 B6 82 99 D2 72 47 AB F6 8F D4 E8 E8
|
|
|
|
|
0230 | CE 1E 47 A3 AA 95 5B 4E C1 9A 78 F3 26 48 34 0B
|
|
|
|
|
0240 | 5A 30 59 88 66 CA C8 50 27 77 46 03 D1 FD FB 40
|
|
|
|
|
0250 | 95 9F 34 3B 1B 83 65 46 5E B9 68 4F F7 15 47 2C
|
|
|
|
|
0260 | FC 93 55 20 D1 F4 D2 CE 86 1B 5C CD 98 F6 92 D4
|
|
|
|
|
0270 | B2 E9 FD F7 6B 11 DC 78 C6 59 A7 54 C7 F1 EF 32
|
|
|
|
|
0280 | 3A 76 DF 25 C8 A7 0A 6B D0 23 51 B6</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 = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E305
|
|
|
|
|
<tr>
|
|
|
|
|
<td>message_id</td>
|
|
|
|
|
<td>8, 8</td>
|
|
|
|
|
<td><code>018C73A4D67CAE66</code></td>
|
|
|
|
|
<td><code>012CD4808462AF66</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>B8020000</code> (696 in decimal)</td>
|
|
|
|
|
<td><code>B0020000</code> (688 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -482,19 +482,19 @@ random_padding_bytes = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E305
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_answer</td>
|
|
|
|
|
<td>56, 596</td>
|
|
|
|
|
<td><code>FE500200F103E34D576316DC3A7E0030</code> <code>865ED04FA629839612B95ED378F8BBA2</code> <code>F76A071BD1F0E751C57441EDF51EC196</code> <code>3F9C8869EF96F15878B12D3A1A67C94E</code> <code>B2DFD6A2D7C0A08990F1EFC7609AEC68</code> <code>1275326F1681CDF57F90F1DE610C7931</code> <code>1C4CEC4D0775D3394B3F8BBD47F50EF1</code> <code>0DA9A336389A259E6AF9CAD02683AE29</code> <code>245752F088081D1F7949698651E759E1</code> <code>EFF974E4FF3A21AAF3E73C92E2CF7CFB</code> <code>F2460DED2D83B1A6A7AC31C8D093F1FA</code> <code>4E19220359CA59395FEF939DC3DDD548</code> <code>C3CE9EF68AFD99488A7034CC0FCE55C7</code> <code>F16239C182AEA5AF965464B6C77BCC47</code> <code>C2042D4D1A8D6E00F52568D51B30088C</code> <code>123C0C25A956A59C8D3587EA9A0B8C1E</code> <code>814675874C1D928E0A92A06ECF5BEC44</code> <code>C2538D05A1D6DC87BB7248C8DD8A86B0</code> <code>685B75ACB479A4A9BCDB51A79DD5AAF5</code> <code>516469A52A4793A277C39B08D8FB5C55</code> <code>58EB38445E78CDFFC3418FA5BC6D3F22</code> <code>E675EF65A19D4C34F80D11CF45906EAB</code> <code>4B4D4E9412976789DD905199403AC586</code> <code>A3F2580F7F9EBC86F91B78F8E75B0A89</code> <code>A65E71EB90F4D79AFAB7CF44B1C99316</code> <code>2F38E1D76EEA1620E5294BA9FBA3266A</code> <code>58C8D292E82E6DE7DAD3064D0C70EB8E</code> <code>ADB98023B783AFBD11CEAD103F31998E</code> <code>43DB2704F892ACEA10080B026ACB1217</code> <code>90D4AAE74A9519BB9F1F5CBA8F55DBA2</code> <code>9057FA224176BBD96F4B8F0A8E989A5A</code> <code>3B4D9F5B3970F934D20AE93989FE13B0</code> <code>E4871706B50EC9B761389FD02565E2C8</code> <code>493969903D13A7F83A7C0E695F69767A</code> <code>E091C4100E5045846FB8CDFD856A4DA3</code> <code>DDDF8F5E9009DC1DF0C9F2436A77067F</code> <code>56A1D2C004E397C3153CCA8BE1A36E29</code><br> <code>DD8DFAAB</code></td>
|
|
|
|
|
<td><code>FE5002007659D3CAEDAC068821966A4E</code> <code>0FAC9AF2476E268558046DED9D775B41</code> <code>E5549E341EA2FBE906D8F6A9FFCEE5F7</code> <code>F93E2CAFD49D0F3EA7F80CA599B9059B</code> <code>063D1FD2E80A032E194FD385E03D497A</code> <code>410EB08AE69172AC3E3081D34D4EE0BD</code> <code>BCC1A6012C746542EF08A2081B3CA9BC</code> <code>7B59A1CD2CACDD4A50973ED04EA61228</code> <code>FAE51B86A673691E50D2993B51B98E5C</code> <code>9355C1F6302887C648FDA61FB41D7729</code> <code>16C602E2BB9A3F31A99BD0545369F5FB</code> <code>60DBBAB0641E3048C68811FBC18DA914</code> <code>AEAF2630AC40FC0A89308675BA8E97D0</code> <code>9D5DD9221AE576058878F59FEA775DB7</code> <code>FA7A630C170162FEF253FC7BDA3AEB8A</code> <code>AE087786CF44134291019E650A2AC9B8</code> <code>B49BD7F0C5B82B3952B51F479A973837</code> <code>DEF2CA9F5429E647F0AA679CCC173ACE</code> <code>58CCED569F81569B9124F8D068DCAF37</code> <code>36DDE3B163224927667DCE1EBE62382B</code> <code>60B054CD05CD2E6379BADD5B0E26828E</code> <code>F651066B0E4DA864EEF0CC812821490F</code> <code>24E1266EAB831CF492CD632936CD37DA</code> <code>3C09F5C30D0E0A3F913D27E6B955F952</code> <code>19B424B1E75283FB757F054109E850FD</code> <code>1DB9710A253B2F76979ED48C67D82AE2</code> <code>CDDC853D32E4159AA2D1940E6447B1EE</code> <code>3D827DCD968AC78B301654AD773FFE52</code> <code>7B27E13BE3D4AE65197A709A3AB5EC52</code> <code>28DBFBDF6A7A776034DB76016C125DF5</code> <code>5EFBA7CAF1C30B1D6A832126B68299D2</code> <code>7247ABF68FD4E8E8CE1E47A3AA955B4E</code> <code>C19A78F32648340B5A30598866CAC850</code> <code>27774603D1FDFB40959F343B1B836546</code> <code>5EB9684FF715472CFC935520D1F4D2CE</code> <code>861B5CCD98F692D4B2E9FDF76B11DC78</code> <code>C659A754C7F1EF323A76DF25C8A70A6B</code><br> <code>D02351B6</code></td>
|
|
|
|
|
<td>See below</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -502,20 +502,20 @@ random_padding_bytes = 7E3A165D4F87FDA3F2B5A0FE14639AACF9EF9C55B1CCA0E1270A3E305
|
|
|
|
|
<!-- 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 = F103E34D576316DC3A7E0030865ED04FA629839612B95ED378F8BBA2F76A071BD1F0E751C57441EDF51EC1963F9C8869EF96F15878B12D3A1A67C94EB2DFD6A2D7C0A08990F1EFC7609AEC681275326F1681CDF57F90F1DE610C79311C4CEC4D0775D3394B3F8BBD47F50EF10DA9A336389A259E6AF9CAD02683AE29245752F088081D1F7949698651E759E1EFF974E4FF3A21AAF3E73C92E2CF7CFBF2460DED2D83B1A6A7AC31C8D093F1FA4E19220359CA59395FEF939DC3DDD548C3CE9EF68AFD99488A7034CC0FCE55C7F16239C182AEA5AF965464B6C77BCC47C2042D4D1A8D6E00F52568D51B30088C123C0C25A956A59C8D3587EA9A0B8C1E814675874C1D928E0A92A06ECF5BEC44C2538D05A1D6DC87BB7248C8DD8A86B0685B75ACB479A4A9BCDB51A79DD5AAF5516469A52A4793A277C39B08D8FB5C5558EB38445E78CDFFC3418FA5BC6D3F22E675EF65A19D4C34F80D11CF45906EAB4B4D4E9412976789DD905199403AC586A3F2580F7F9EBC86F91B78F8E75B0A89A65E71EB90F4D79AFAB7CF44B1C993162F38E1D76EEA1620E5294BA9FBA3266A58C8D292E82E6DE7DAD3064D0C70EB8EADB98023B783AFBD11CEAD103F31998E43DB2704F892ACEA10080B026ACB121790D4AAE74A9519BB9F1F5CBA8F55DBA29057FA224176BBD96F4B8F0A8E989A5A3B4D9F5B3970F934D20AE93989FE13B0E4871706B50EC9B761389FD02565E2C8493969903D13A7F83A7C0E695F69767AE091C4100E5045846FB8CDFD856A4DA3DDDF8F5E9009DC1DF0C9F2436A77067F56A1D2C004E397C3153CCA8BE1A36E29DD8DFAAB
|
|
|
|
|
tmp_aes_key = 1FFFA9B5D7E45DB6209F9E01E4696BF605CADC0FDDE85B3DBE7DA3D1340F6FFC
|
|
|
|
|
tmp_aes_iv = 775604724F7BA654671797DB82CF137216DA2B7B0508157953386F9E873CC612</code></pre>
|
|
|
|
|
<pre><code>encrypted_answer = 7659D3CAEDAC068821966A4E0FAC9AF2476E268558046DED9D775B41E5549E341EA2FBE906D8F6A9FFCEE5F7F93E2CAFD49D0F3EA7F80CA599B9059B063D1FD2E80A032E194FD385E03D497A410EB08AE69172AC3E3081D34D4EE0BDBCC1A6012C746542EF08A2081B3CA9BC7B59A1CD2CACDD4A50973ED04EA61228FAE51B86A673691E50D2993B51B98E5C9355C1F6302887C648FDA61FB41D772916C602E2BB9A3F31A99BD0545369F5FB60DBBAB0641E3048C68811FBC18DA914AEAF2630AC40FC0A89308675BA8E97D09D5DD9221AE576058878F59FEA775DB7FA7A630C170162FEF253FC7BDA3AEB8AAE087786CF44134291019E650A2AC9B8B49BD7F0C5B82B3952B51F479A973837DEF2CA9F5429E647F0AA679CCC173ACE58CCED569F81569B9124F8D068DCAF3736DDE3B163224927667DCE1EBE62382B60B054CD05CD2E6379BADD5B0E26828EF651066B0E4DA864EEF0CC812821490F24E1266EAB831CF492CD632936CD37DA3C09F5C30D0E0A3F913D27E6B955F95219B424B1E75283FB757F054109E850FD1DB9710A253B2F76979ED48C67D82AE2CDDC853D32E4159AA2D1940E6447B1EE3D827DCD968AC78B301654AD773FFE527B27E13BE3D4AE65197A709A3AB5EC5228DBFBDF6A7A776034DB76016C125DF55EFBA7CAF1C30B1D6A832126B68299D27247ABF68FD4E8E8CE1E47A3AA955B4EC19A78F32648340B5A30598866CAC85027774603D1FDFB40959F343B1B8365465EB9684FF715472CFC935520D1F4D2CE861B5CCD98F692D4B2E9FDF76B11DC78C659A754C7F1EF323A76DF25C8A70A6BD02351B6
|
|
|
|
|
tmp_aes_key = EB319ECE328BC38718F88B7D916EF0F8FD0052C119B5BB051B20F6CAE9630513
|
|
|
|
|
tmp_aes_iv = 15B0D222C642234E5A618C381028C6A629D40B49517B6A4E9748DEA064DEE608</code></pre>
|
|
|
|
|
<!-- end server_DH_inner_data_input -->
|
|
|
|
|
<p>Yielding:</p>
|
|
|
|
|
<!-- start server_DH_inner_data_output -->
|
|
|
|
|
<pre><code>answer_with_hash = C1E648CED14AFB4B06CAC0DBF81C193BCF7E9AA9BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010045BE02C3DFE09F63C4761C2224C02BE4A07B1CC2B3A17019999A8893C2A190D7802D4E1D4BEBC4858B2D37DC9BADD9402F9AA494C22F989A237DFBCF523EB79A4870E81D33A134A0108E3A156834951EE4E29F08F35669B0B8DD7228803C601619013CA0A424A036DD4F5405BEFDEC63344567CA13CA3E293881E38F611D02207899E2CBCB37A07DD5463ED93D21DE6098F73D57B4865CE58489D4EB4391AF9195AB08CF724BFD5B6CC9331E43D88DE8C2D3F8356AEF78F7BD369298F5DADF01B9749479D8594B10E408A5DB3C54809B02F4347238A20CF74EFF8D2A4973F70521EB3020A4DAE9881A6D0ECE7F73E9079BB77D095EFBC41872427500C26C2748D67CAE663C396F053C33D658
|
|
|
|
|
answer = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010045BE02C3DFE09F63C4761C2224C02BE4A07B1CC2B3A17019999A8893C2A190D7802D4E1D4BEBC4858B2D37DC9BADD9402F9AA494C22F989A237DFBCF523EB79A4870E81D33A134A0108E3A156834951EE4E29F08F35669B0B8DD7228803C601619013CA0A424A036DD4F5405BEFDEC63344567CA13CA3E293881E38F611D02207899E2CBCB37A07DD5463ED93D21DE6098F73D57B4865CE58489D4EB4391AF9195AB08CF724BFD5B6CC9331E43D88DE8C2D3F8356AEF78F7BD369298F5DADF01B9749479D8594B10E408A5DB3C54809B02F4347238A20CF74EFF8D2A4973F70521EB3020A4DAE9881A6D0ECE7F73E9079BB77D095EFBC41872427500C26C2748D67CAE663C396F053C33D658</code></pre>
|
|
|
|
|
<pre><code>answer_with_hash = F609C430A1FAF37C7CA4FB42AE530B9F4DBC4871BA0D89B59A35B34BAD37DF538D3FE4B7DC8C94D7FCF312950D42D98F978F0DF93CCECD0D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010052044CAC8AAA760ED5C6E0C834522C4981D774F8524865DF6ACA8A448442928AF9CFA2B03F14AC4D5BD9B634E03F78D7BF2D26BF3776C81E68B7648678DB7C160DB0632EC8E8FFE822F91457F9076537B41E5079C2B14510A66C0DD89678017A845DB30885B425631196C51FCAFAA158417DE07BD8991351EFC3C0F5D38AEDE97D3F6E550491F6F569E316E4F6A2B9CAACD871E00E8C44211B68ED77EA2513A94BBF21FA4FE88E0A2FC794999D109ADD40B396ECC0F2C0CCB5A17E9362E29D5D2F6BE895C706D75370C1B23A8BFBE4E29E5E2B6C1E8120C629747ADE29AE34ECB207315627A90AF4A3810224541015005E416B8C3BE698365C3645C2717753438462AF66549A2CCE74B33B70
|
|
|
|
|
answer = BA0D89B59A35B34BAD37DF538D3FE4B7DC8C94D7FCF312950D42D98F978F0DF93CCECD0D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010052044CAC8AAA760ED5C6E0C834522C4981D774F8524865DF6ACA8A448442928AF9CFA2B03F14AC4D5BD9B634E03F78D7BF2D26BF3776C81E68B7648678DB7C160DB0632EC8E8FFE822F91457F9076537B41E5079C2B14510A66C0DD89678017A845DB30885B425631196C51FCAFAA158417DE07BD8991351EFC3C0F5D38AEDE97D3F6E550491F6F569E316E4F6A2B9CAACD871E00E8C44211B68ED77EA2513A94BBF21FA4FE88E0A2FC794999D109ADD40B396ECC0F2C0CCB5A17E9362E29D5D2F6BE895C706D75370C1B23A8BFBE4E29E5E2B6C1E8120C629747ADE29AE34ECB207315627A90AF4A3810224541015005E416B8C3BE698365C3645C2717753438462AF66549A2CCE74B33B70</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 98 34 7C 45 20 EB E0 DA DB F9 DE F5
|
|
|
|
|
0010 | 87 F6 3A 18 9A 91 88 40 20 68 F2 31 91 D9 0C C3
|
|
|
|
|
0020 | 31 3C FE D2 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
|
|
|
|
<pre><code>0000 | BA 0D 89 B5 9A 35 B3 4B AD 37 DF 53 8D 3F E4 B7
|
|
|
|
|
0010 | DC 8C 94 D7 FC F3 12 95 0D 42 D9 8F 97 8F 0D F9
|
|
|
|
|
0020 | 3C CE CD 0D 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 = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED
|
|
|
|
|
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 | 45 BE 02 C3 DF E0 9F 63 C4 76 1C 22 24 C0 2B E4
|
|
|
|
|
0140 | A0 7B 1C C2 B3 A1 70 19 99 9A 88 93 C2 A1 90 D7
|
|
|
|
|
0150 | 80 2D 4E 1D 4B EB C4 85 8B 2D 37 DC 9B AD D9 40
|
|
|
|
|
0160 | 2F 9A A4 94 C2 2F 98 9A 23 7D FB CF 52 3E B7 9A
|
|
|
|
|
0170 | 48 70 E8 1D 33 A1 34 A0 10 8E 3A 15 68 34 95 1E
|
|
|
|
|
0180 | E4 E2 9F 08 F3 56 69 B0 B8 DD 72 28 80 3C 60 16
|
|
|
|
|
0190 | 19 01 3C A0 A4 24 A0 36 DD 4F 54 05 BE FD EC 63
|
|
|
|
|
01A0 | 34 45 67 CA 13 CA 3E 29 38 81 E3 8F 61 1D 02 20
|
|
|
|
|
01B0 | 78 99 E2 CB CB 37 A0 7D D5 46 3E D9 3D 21 DE 60
|
|
|
|
|
01C0 | 98 F7 3D 57 B4 86 5C E5 84 89 D4 EB 43 91 AF 91
|
|
|
|
|
01D0 | 95 AB 08 CF 72 4B FD 5B 6C C9 33 1E 43 D8 8D E8
|
|
|
|
|
01E0 | C2 D3 F8 35 6A EF 78 F7 BD 36 92 98 F5 DA DF 01
|
|
|
|
|
01F0 | B9 74 94 79 D8 59 4B 10 E4 08 A5 DB 3C 54 80 9B
|
|
|
|
|
0200 | 02 F4 34 72 38 A2 0C F7 4E FF 8D 2A 49 73 F7 05
|
|
|
|
|
0210 | 21 EB 30 20 A4 DA E9 88 1A 6D 0E CE 7F 73 E9 07
|
|
|
|
|
0220 | 9B B7 7D 09 5E FB C4 18 72 42 75 00 C2 6C 27 48
|
|
|
|
|
0230 | D6 7C AE 66</code></pre>
|
|
|
|
|
0130 | 52 04 4C AC 8A AA 76 0E D5 C6 E0 C8 34 52 2C 49
|
|
|
|
|
0140 | 81 D7 74 F8 52 48 65 DF 6A CA 8A 44 84 42 92 8A
|
|
|
|
|
0150 | F9 CF A2 B0 3F 14 AC 4D 5B D9 B6 34 E0 3F 78 D7
|
|
|
|
|
0160 | BF 2D 26 BF 37 76 C8 1E 68 B7 64 86 78 DB 7C 16
|
|
|
|
|
0170 | 0D B0 63 2E C8 E8 FF E8 22 F9 14 57 F9 07 65 37
|
|
|
|
|
0180 | B4 1E 50 79 C2 B1 45 10 A6 6C 0D D8 96 78 01 7A
|
|
|
|
|
0190 | 84 5D B3 08 85 B4 25 63 11 96 C5 1F CA FA A1 58
|
|
|
|
|
01A0 | 41 7D E0 7B D8 99 13 51 EF C3 C0 F5 D3 8A ED E9
|
|
|
|
|
01B0 | 7D 3F 6E 55 04 91 F6 F5 69 E3 16 E4 F6 A2 B9 CA
|
|
|
|
|
01C0 | AC D8 71 E0 0E 8C 44 21 1B 68 ED 77 EA 25 13 A9
|
|
|
|
|
01D0 | 4B BF 21 FA 4F E8 8E 0A 2F C7 94 99 9D 10 9A DD
|
|
|
|
|
01E0 | 40 B3 96 EC C0 F2 C0 CC B5 A1 7E 93 62 E2 9D 5D
|
|
|
|
|
01F0 | 2F 6B E8 95 C7 06 D7 53 70 C1 B2 3A 8B FB E4 E2
|
|
|
|
|
0200 | 9E 5E 2B 6C 1E 81 20 C6 29 74 7A DE 29 AE 34 EC
|
|
|
|
|
0210 | B2 07 31 56 27 A9 0A F4 A3 81 02 24 54 10 15 00
|
|
|
|
|
0220 | 5E 41 6B 8C 3B E6 98 36 5C 36 45 C2 71 77 53 43
|
|
|
|
|
0230 | 84 62 AF 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 = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -594,13 +594,13 @@ answer = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_a</td>
|
|
|
|
|
<td>300, 260</td>
|
|
|
|
|
<td><code>FE00010045BE02C3DFE09F63C4761C22</code> <code>24C02BE4A07B1CC2B3A17019999A8893</code> <code>C2A190D7802D4E1D4BEBC4858B2D37DC</code> <code>9BADD9402F9AA494C22F989A237DFBCF</code> <code>523EB79A4870E81D33A134A0108E3A15</code> <code>6834951EE4E29F08F35669B0B8DD7228</code> <code>803C601619013CA0A424A036DD4F5405</code> <code>BEFDEC63344567CA13CA3E293881E38F</code> <code>611D02207899E2CBCB37A07DD5463ED9</code> <code>3D21DE6098F73D57B4865CE58489D4EB</code> <code>4391AF9195AB08CF724BFD5B6CC9331E</code> <code>43D88DE8C2D3F8356AEF78F7BD369298</code> <code>F5DADF01B9749479D8594B10E408A5DB</code> <code>3C54809B02F4347238A20CF74EFF8D2A</code> <code>4973F70521EB3020A4DAE9881A6D0ECE</code> <code>7F73E9079BB77D095EFBC41872427500</code><br> <code>C26C2748</code></td>
|
|
|
|
|
<td><code>FE00010052044CAC8AAA760ED5C6E0C8</code> <code>34522C4981D774F8524865DF6ACA8A44</code> <code>8442928AF9CFA2B03F14AC4D5BD9B634</code> <code>E03F78D7BF2D26BF3776C81E68B76486</code> <code>78DB7C160DB0632EC8E8FFE822F91457</code> <code>F9076537B41E5079C2B14510A66C0DD8</code> <code>9678017A845DB30885B425631196C51F</code> <code>CAFAA158417DE07BD8991351EFC3C0F5</code> <code>D38AEDE97D3F6E550491F6F569E316E4</code> <code>F6A2B9CAACD871E00E8C44211B68ED77</code> <code>EA2513A94BBF21FA4FE88E0A2FC79499</code> <code>9D109ADD40B396ECC0F2C0CCB5A17E93</code> <code>62E29D5D2F6BE895C706D75370C1B23A</code> <code>8BFBE4E29E5E2B6C1E8120C629747ADE</code> <code>29AE34ECB207315627A90AF4A3810224</code> <code>541015005E416B8C3BE698365C3645C2</code><br> <code>71775343</code></td>
|
|
|
|
|
<td><code>g_a</code> diffie-hellman parameter</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_time</td>
|
|
|
|
|
<td>560, 4</td>
|
|
|
|
|
<td><code>D67CAE66</code> (1722711254 in decimal)</td>
|
|
|
|
|
<td><code>8462AF66</code> (1722770052 in decimal)</td>
|
|
|
|
|
<td>Server time</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
@ -609,34 +609,34 @@ answer = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED
|
|
|
|
|
<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 = 488B742194B2B37D45C22916124ECF11D98311BA876C50A69433BA0D3A023359BD840D58389EBF223C79097926869213F2715226FD2484B239A3C3D8E6BE303614D9AC3707608747DE436A38F7BAC04AD4D3BFDE63798BE03DF41FF18118D72DB74FBEB7D799E30022D3581454B7AD46822EFF3B32A41690947189FC2B0AC9E1FA76873C2EE87D092192D06320230B11596959A4E71AD220048A56DA3F2BEF566E2EF1F0F11A89B107279269254769BC54C45E7CED7490AED498F2EABEF7769599960503D4F2AE93B288ED991E3F5780F83F8C985CC18CBC73EA431FD3414C4AFBBEF63B1863B61CCB69D2C9F18E780BDACDE059CBC9C9557C7CD029B01ED3E5</code></pre>
|
|
|
|
|
<pre><code>b = B2FE521A6BFCF46E214F7FC47FCE5618946538CC60C0A4ED059D50CCAB539EBD96DB494D85CDB5DA7E9BFB36CEFC7ABDA126E1412F4BE0B2401AF82569B811AD415F1336A92F85935DDC8B96E0883563E23F3346893BD42F2EC63E7EDAD2C96FEBAF5D9917A70C6F00FA3FDCE10DA47AD3DF6BED8A868DC455B29ACE23D7DBA83FB31DF0B164E25A0DD8B36510B460D5E7DEE921BD5E9F0BF588F61D0FC2551A024F8E722BB8692E26CECFB110FCE7B8A010C77F92F9E6635ED3E408FD3D60A6A6669EE76FABFE615AD78989036AE418D4F89C67F9615D6304C24510BDE92A27E5D07074E216ED9C9E2D42C8FEAAE57DD795B39D9F358587F09ED2C7A658EF75</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 = 55AEDE83E23F21E7F3E81526E01C2C64FBD8A8C1A9951E828E262226F8B3A81A28C68943F7285BDA3DAC6AC1533283F0BCA77BE945F2F36067CFAA287B67C2B68659CC7543B0601BDA60DA0CF95BC29AD1CA01CD023B69C13DC5D733A741B1E904BEB8F78277B91771F31526E9F2D4A01B41671038E00AF59046F8FFB204DA1AB6878D13B6FCBF91F6D0E9A47320CF9096E46EBA132DB37D2DFC8A36B45317C125D947A526097CB810E69398F918C50F6589C5FEF815ACC28D4127F9D6A1FF767E9108D7B60D5C6E6D68C2A270E2747D7DD35295BD477B4ACFA0BAE3E4CA3E62F3292626EEC7F645F816279C645BC75F704F9EED4DADC05AD2ED7E98D24D88E1</code></pre>
|
|
|
|
|
<pre><code>g_b = 38D29FCE5290891BBEF14981C17D14ED5B7816D736E7F35139D6B0F0E8D8EB0DFB8D6FFDD765C8A4D791F61205B3C3E853C97CAD8C7082410B6D4482216C126D95B525078F3BEEEED64E2E9F884C9269E52FB2CD9297B1F5A09C5A50F87BA4F7FA671B2B27A4F786CA2FB3ECC847120D4794D892FCC1C5CF77149A20CA115B449692F042E0721BFEEB0F99B9030E17F9E0606858E7C79485A4F20142FBBA2BE653A87F9C7B260F9BB0A4EFB0D7FC118874409E063EBF7917997F41C765CC5AFE88A3304FB11CE753ED063EEC2780C0954E5C75F6A826F743484CDC02A22353F20E19ECA314AD53197A41C649FC89D37A504FA1239C0F43082A5C089B1A53B25D</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 98 34 7C 45 20 EB E0 DA DB F9 DE F5
|
|
|
|
|
0010 | 87 F6 3A 18 9A 91 88 40 20 68 F2 31 91 D9 0C C3
|
|
|
|
|
0020 | 31 3C FE D2 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 55 AE DE 83 E2 3F 21 E7 F3 E8 15 26 E0 1C 2C 64
|
|
|
|
|
0040 | FB D8 A8 C1 A9 95 1E 82 8E 26 22 26 F8 B3 A8 1A
|
|
|
|
|
0050 | 28 C6 89 43 F7 28 5B DA 3D AC 6A C1 53 32 83 F0
|
|
|
|
|
0060 | BC A7 7B E9 45 F2 F3 60 67 CF AA 28 7B 67 C2 B6
|
|
|
|
|
0070 | 86 59 CC 75 43 B0 60 1B DA 60 DA 0C F9 5B C2 9A
|
|
|
|
|
0080 | D1 CA 01 CD 02 3B 69 C1 3D C5 D7 33 A7 41 B1 E9
|
|
|
|
|
0090 | 04 BE B8 F7 82 77 B9 17 71 F3 15 26 E9 F2 D4 A0
|
|
|
|
|
00A0 | 1B 41 67 10 38 E0 0A F5 90 46 F8 FF B2 04 DA 1A
|
|
|
|
|
00B0 | B6 87 8D 13 B6 FC BF 91 F6 D0 E9 A4 73 20 CF 90
|
|
|
|
|
00C0 | 96 E4 6E BA 13 2D B3 7D 2D FC 8A 36 B4 53 17 C1
|
|
|
|
|
00D0 | 25 D9 47 A5 26 09 7C B8 10 E6 93 98 F9 18 C5 0F
|
|
|
|
|
00E0 | 65 89 C5 FE F8 15 AC C2 8D 41 27 F9 D6 A1 FF 76
|
|
|
|
|
00F0 | 7E 91 08 D7 B6 0D 5C 6E 6D 68 C2 A2 70 E2 74 7D
|
|
|
|
|
0100 | 7D D3 52 95 BD 47 7B 4A CF A0 BA E3 E4 CA 3E 62
|
|
|
|
|
0110 | F3 29 26 26 EE C7 F6 45 F8 16 27 9C 64 5B C7 5F
|
|
|
|
|
0120 | 70 4F 9E ED 4D AD C0 5A D2 ED 7E 98 D2 4D 88 E1</code></pre>
|
|
|
|
|
<pre><code>0000 | 54 B6 43 66 9A 35 B3 4B AD 37 DF 53 8D 3F E4 B7
|
|
|
|
|
0010 | DC 8C 94 D7 FC F3 12 95 0D 42 D9 8F 97 8F 0D F9
|
|
|
|
|
0020 | 3C CE CD 0D 00 00 00 00 00 00 00 00 FE 00 01 00
|
|
|
|
|
0030 | 38 D2 9F CE 52 90 89 1B BE F1 49 81 C1 7D 14 ED
|
|
|
|
|
0040 | 5B 78 16 D7 36 E7 F3 51 39 D6 B0 F0 E8 D8 EB 0D
|
|
|
|
|
0050 | FB 8D 6F FD D7 65 C8 A4 D7 91 F6 12 05 B3 C3 E8
|
|
|
|
|
0060 | 53 C9 7C AD 8C 70 82 41 0B 6D 44 82 21 6C 12 6D
|
|
|
|
|
0070 | 95 B5 25 07 8F 3B EE EE D6 4E 2E 9F 88 4C 92 69
|
|
|
|
|
0080 | E5 2F B2 CD 92 97 B1 F5 A0 9C 5A 50 F8 7B A4 F7
|
|
|
|
|
0090 | FA 67 1B 2B 27 A4 F7 86 CA 2F B3 EC C8 47 12 0D
|
|
|
|
|
00A0 | 47 94 D8 92 FC C1 C5 CF 77 14 9A 20 CA 11 5B 44
|
|
|
|
|
00B0 | 96 92 F0 42 E0 72 1B FE EB 0F 99 B9 03 0E 17 F9
|
|
|
|
|
00C0 | E0 60 68 58 E7 C7 94 85 A4 F2 01 42 FB BA 2B E6
|
|
|
|
|
00D0 | 53 A8 7F 9C 7B 26 0F 9B B0 A4 EF B0 D7 FC 11 88
|
|
|
|
|
00E0 | 74 40 9E 06 3E BF 79 17 99 7F 41 C7 65 CC 5A FE
|
|
|
|
|
00F0 | 88 A3 30 4F B1 1C E7 53 ED 06 3E EC 27 80 C0 95
|
|
|
|
|
0100 | 4E 5C 75 F6 A8 26 F7 43 48 4C DC 02 A2 23 53 F2
|
|
|
|
|
0110 | 0E 19 EC A3 14 AD 53 19 7A 41 C6 49 FC 89 D3 7A
|
|
|
|
|
0120 | 50 4F A1 23 9C 0F 43 08 2A 5C 08 9B 1A 53 B2 5D</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 = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>4, 16</td>
|
|
|
|
|
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>20, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>g_b</td>
|
|
|
|
|
<td>36, 260</td>
|
|
|
|
|
<td><code>FE00010055AEDE83E23F21E7F3E81526</code> <code>E01C2C64FBD8A8C1A9951E828E262226</code> <code>F8B3A81A28C68943F7285BDA3DAC6AC1</code> <code>533283F0BCA77BE945F2F36067CFAA28</code> <code>7B67C2B68659CC7543B0601BDA60DA0C</code> <code>F95BC29AD1CA01CD023B69C13DC5D733</code> <code>A741B1E904BEB8F78277B91771F31526</code> <code>E9F2D4A01B41671038E00AF59046F8FF</code> <code>B204DA1AB6878D13B6FCBF91F6D0E9A4</code> <code>7320CF9096E46EBA132DB37D2DFC8A36</code> <code>B45317C125D947A526097CB810E69398</code> <code>F918C50F6589C5FEF815ACC28D4127F9</code> <code>D6A1FF767E9108D7B60D5C6E6D68C2A2</code> <code>70E2747D7DD35295BD477B4ACFA0BAE3</code> <code>E4CA3E62F3292626EEC7F645F816279C</code> <code>645BC75F704F9EED4DADC05AD2ED7E98</code><br> <code>D24D88E1</code></td>
|
|
|
|
|
<td><code>FE00010038D29FCE5290891BBEF14981</code> <code>C17D14ED5B7816D736E7F35139D6B0F0</code> <code>E8D8EB0DFB8D6FFDD765C8A4D791F612</code> <code>05B3C3E853C97CAD8C7082410B6D4482</code> <code>216C126D95B525078F3BEEEED64E2E9F</code> <code>884C9269E52FB2CD9297B1F5A09C5A50</code> <code>F87BA4F7FA671B2B27A4F786CA2FB3EC</code> <code>C847120D4794D892FCC1C5CF77149A20</code> <code>CA115B449692F042E0721BFEEB0F99B9</code> <code>030E17F9E0606858E7C79485A4F20142</code> <code>FBBA2BE653A87F9C7B260F9BB0A4EFB0</code> <code>D7FC118874409E063EBF7917997F41C7</code> <code>65CC5AFE88A3304FB11CE753ED063EEC</code> <code>2780C0954E5C75F6A826F743484CDC02</code> <code>A22353F20E19ECA314AD53197A41C649</code> <code>FC89D37A504FA1239C0F43082A5C089B</code><br> <code>1A53B25D</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 = BA0D89B598347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED
|
|
|
|
|
<!-- 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 = 54B6436698347C4520EBE0DADBF9DEF587F63A189A9188402068F23191D90CC3313CFED20000000000000000FE00010055AEDE83E23F21E7F3E81526E01C2C64FBD8A8C1A9951E828E262226F8B3A81A28C68943F7285BDA3DAC6AC1533283F0BCA77BE945F2F36067CFAA287B67C2B68659CC7543B0601BDA60DA0CF95BC29AD1CA01CD023B69C13DC5D733A741B1E904BEB8F78277B91771F31526E9F2D4A01B41671038E00AF59046F8FFB204DA1AB6878D13B6FCBF91F6D0E9A47320CF9096E46EBA132DB37D2DFC8A36B45317C125D947A526097CB810E69398F918C50F6589C5FEF815ACC28D4127F9D6A1FF767E9108D7B60D5C6E6D68C2A270E2747D7DD35295BD477B4ACFA0BAE3E4CA3E62F3292626EEC7F645F816279C645BC75F704F9EED4DADC05AD2ED7E98D24D88E1
|
|
|
|
|
padding = 2083F51E9B7D408A67C913FF
|
|
|
|
|
tmp_aes_key = 1FFFA9B5D7E45DB6209F9E01E4696BF605CADC0FDDE85B3DBE7DA3D1340F6FFC
|
|
|
|
|
tmp_aes_iv = 775604724F7BA654671797DB82CF137216DA2B7B0508157953386F9E873CC612</code></pre>
|
|
|
|
|
<pre><code>data = 54B643669A35B34BAD37DF538D3FE4B7DC8C94D7FCF312950D42D98F978F0DF93CCECD0D0000000000000000FE00010038D29FCE5290891BBEF14981C17D14ED5B7816D736E7F35139D6B0F0E8D8EB0DFB8D6FFDD765C8A4D791F61205B3C3E853C97CAD8C7082410B6D4482216C126D95B525078F3BEEEED64E2E9F884C9269E52FB2CD9297B1F5A09C5A50F87BA4F7FA671B2B27A4F786CA2FB3ECC847120D4794D892FCC1C5CF77149A20CA115B449692F042E0721BFEEB0F99B9030E17F9E0606858E7C79485A4F20142FBBA2BE653A87F9C7B260F9BB0A4EFB0D7FC118874409E063EBF7917997F41C765CC5AFE88A3304FB11CE753ED063EEC2780C0954E5C75F6A826F743484CDC02A22353F20E19ECA314AD53197A41C649FC89D37A504FA1239C0F43082A5C089B1A53B25D
|
|
|
|
|
padding = 265C58AA0D538FAFCBDC1894
|
|
|
|
|
tmp_aes_key = EB319ECE328BC38718F88B7D916EF0F8FD0052C119B5BB051B20F6CAE9630513
|
|
|
|
|
tmp_aes_iv = 15B0D222C642234E5A618C381028C6A629D40B49517B6A4E9748DEA064DEE608</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 = F7AF24E1D13FA6C6A7FB383972A7CB419E05A4349D5EA125D1AC2BB311030FD3883BAFEF646F8149CC5611B85F1492343F6CC01E9F793B766A995C174C92D49938F9D555087A46E16FBB45B521C75B6E6288D1ED2FA4BAFAF3B094FC59EBB154E6EB42AA9C615F6450F2B2A60EE4C7908435EC3ABC18422841B5D3CEDA9CDFF0192D7B8D7FCB29A8906E1158C85C72C3CD3DB849891C1BDBAB2649B9AA330487B6CA144E99E591D3063D886C0AADDEF67845E9D9EC78A4968405E86C1EAE292B41FC07797DDC98669893A234329B365603FEB638DD879C7A610FF54F053B8218CB95FC184D512339CEA169E1D835BB1D477CACEB89C5DCF9F09A4CE17535BA8255E4E6EB2B62A6E84C48F5B9F9E7DC81A4A9A1ACBC427EC5823A7FBA2ACB9939D1230A5E1135ABC6886B3EFEE09F0467ECA2E6E3B97F622121C1A7552EE955D873BD8DAA8B3C13F60764768BA9550853</code></pre>
|
|
|
|
|
<pre><code>encrypted_data = DAED234295F32CE16D9A890D3BB3EBB0089477B3E56389BF9ABAC8BF9D623F4BEB358FF69016728C71C8EC39C8ED3502CF04BEA04F42BFCF0A47EF3FD1001AECCD29A9CD5AF88870AB777937DC5F001377E902097356936DB5DF4BBDFFDB5C76DB57245A203A6E8ADAF72E03F499209576532A145997970CC0872B23D148FC4B9D6BD4A16680C616AA82E5C9C9F3D00EA3DF9E1EA8187E1ADBBECC73250F1D39CD77339B442062FC58D0E7E4FB72CD1245EFBE46EB2A4CE662D09F308E7CB09A2518E3BD3C645C4B57F776AE7409CD625C6D6564082AEC095AD2201B760C1610235198DBF2B58B79A64B7ADAADD2FABD8D4F8AFF274C6FB64228EA45C5D3EED2D0B9A122E32259EB511C4532673DF4D4DF7BE8F7C7B8C36080E2E3B959614B6EE7827F502113028E0FEA3821EEF7FBDA8BC7B30AFF1D18AF330C34D9D42046E4DCDC267172530BE1AF9239DC544B8E9C</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 18 15 0C 00 D6 7C AE 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 98 34 7C 45 20 EB E0 DA
|
|
|
|
|
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
|
|
|
|
|
0030 | 91 D9 0C C3 31 3C FE D2 FE 50 01 00 F7 AF 24 E1
|
|
|
|
|
0040 | D1 3F A6 C6 A7 FB 38 39 72 A7 CB 41 9E 05 A4 34
|
|
|
|
|
0050 | 9D 5E A1 25 D1 AC 2B B3 11 03 0F D3 88 3B AF EF
|
|
|
|
|
0060 | 64 6F 81 49 CC 56 11 B8 5F 14 92 34 3F 6C C0 1E
|
|
|
|
|
0070 | 9F 79 3B 76 6A 99 5C 17 4C 92 D4 99 38 F9 D5 55
|
|
|
|
|
0080 | 08 7A 46 E1 6F BB 45 B5 21 C7 5B 6E 62 88 D1 ED
|
|
|
|
|
0090 | 2F A4 BA FA F3 B0 94 FC 59 EB B1 54 E6 EB 42 AA
|
|
|
|
|
00A0 | 9C 61 5F 64 50 F2 B2 A6 0E E4 C7 90 84 35 EC 3A
|
|
|
|
|
00B0 | BC 18 42 28 41 B5 D3 CE DA 9C DF F0 19 2D 7B 8D
|
|
|
|
|
00C0 | 7F CB 29 A8 90 6E 11 58 C8 5C 72 C3 CD 3D B8 49
|
|
|
|
|
00D0 | 89 1C 1B DB AB 26 49 B9 AA 33 04 87 B6 CA 14 4E
|
|
|
|
|
00E0 | 99 E5 91 D3 06 3D 88 6C 0A AD DE F6 78 45 E9 D9
|
|
|
|
|
00F0 | EC 78 A4 96 84 05 E8 6C 1E AE 29 2B 41 FC 07 79
|
|
|
|
|
0100 | 7D DC 98 66 98 93 A2 34 32 9B 36 56 03 FE B6 38
|
|
|
|
|
0110 | DD 87 9C 7A 61 0F F5 4F 05 3B 82 18 CB 95 FC 18
|
|
|
|
|
0120 | 4D 51 23 39 CE A1 69 E1 D8 35 BB 1D 47 7C AC EB
|
|
|
|
|
0130 | 89 C5 DC F9 F0 9A 4C E1 75 35 BA 82 55 E4 E6 EB
|
|
|
|
|
0140 | 2B 62 A6 E8 4C 48 F5 B9 F9 E7 DC 81 A4 A9 A1 AC
|
|
|
|
|
0150 | BC 42 7E C5 82 3A 7F BA 2A CB 99 39 D1 23 0A 5E
|
|
|
|
|
0160 | 11 35 AB C6 88 6B 3E FE E0 9F 04 67 EC A2 E6 E3
|
|
|
|
|
0170 | B9 7F 62 21 21 C1 A7 55 2E E9 55 D8 73 BD 8D AA
|
|
|
|
|
0180 | 8B 3C 13 F6 07 64 76 8B A9 55 08 53</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 78 CB 07 00 84 62 AF 66
|
|
|
|
|
0010 | 78 01 00 00 1F 5F 04 F5 9A 35 B3 4B AD 37 DF 53
|
|
|
|
|
0020 | 8D 3F E4 B7 DC 8C 94 D7 FC F3 12 95 0D 42 D9 8F
|
|
|
|
|
0030 | 97 8F 0D F9 3C CE CD 0D FE 50 01 00 DA ED 23 42
|
|
|
|
|
0040 | 95 F3 2C E1 6D 9A 89 0D 3B B3 EB B0 08 94 77 B3
|
|
|
|
|
0050 | E5 63 89 BF 9A BA C8 BF 9D 62 3F 4B EB 35 8F F6
|
|
|
|
|
0060 | 90 16 72 8C 71 C8 EC 39 C8 ED 35 02 CF 04 BE A0
|
|
|
|
|
0070 | 4F 42 BF CF 0A 47 EF 3F D1 00 1A EC CD 29 A9 CD
|
|
|
|
|
0080 | 5A F8 88 70 AB 77 79 37 DC 5F 00 13 77 E9 02 09
|
|
|
|
|
0090 | 73 56 93 6D B5 DF 4B BD FF DB 5C 76 DB 57 24 5A
|
|
|
|
|
00A0 | 20 3A 6E 8A DA F7 2E 03 F4 99 20 95 76 53 2A 14
|
|
|
|
|
00B0 | 59 97 97 0C C0 87 2B 23 D1 48 FC 4B 9D 6B D4 A1
|
|
|
|
|
00C0 | 66 80 C6 16 AA 82 E5 C9 C9 F3 D0 0E A3 DF 9E 1E
|
|
|
|
|
00D0 | A8 18 7E 1A DB BE CC 73 25 0F 1D 39 CD 77 33 9B
|
|
|
|
|
00E0 | 44 20 62 FC 58 D0 E7 E4 FB 72 CD 12 45 EF BE 46
|
|
|
|
|
00F0 | EB 2A 4C E6 62 D0 9F 30 8E 7C B0 9A 25 18 E3 BD
|
|
|
|
|
0100 | 3C 64 5C 4B 57 F7 76 AE 74 09 CD 62 5C 6D 65 64
|
|
|
|
|
0110 | 08 2A EC 09 5A D2 20 1B 76 0C 16 10 23 51 98 DB
|
|
|
|
|
0120 | F2 B5 8B 79 A6 4B 7A DA AD D2 FA BD 8D 4F 8A FF
|
|
|
|
|
0130 | 27 4C 6F B6 42 28 EA 45 C5 D3 EE D2 D0 B9 A1 22
|
|
|
|
|
0140 | E3 22 59 EB 51 1C 45 32 67 3D F4 D4 DF 7B E8 F7
|
|
|
|
|
0150 | C7 B8 C3 60 80 E2 E3 B9 59 61 4B 6E E7 82 7F 50
|
|
|
|
|
0160 | 21 13 02 8E 0F EA 38 21 EE F7 FB DA 8B C7 B3 0A
|
|
|
|
|
0170 | FF 1D 18 AF 33 0C 34 D9 D4 20 46 E4 DC DC 26 71
|
|
|
|
|
0180 | 72 53 0B E1 AF 92 39 DC 54 4B 8E 9C</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>18150C00D67CAE66</code></td>
|
|
|
|
|
<td><code>78CB07008462AF66</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>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>encrypted_data</td>
|
|
|
|
|
<td>56, 340</td>
|
|
|
|
|
<td><code>FE500100F7AF24E1D13FA6C6A7FB3839</code> <code>72A7CB419E05A4349D5EA125D1AC2BB3</code> <code>11030FD3883BAFEF646F8149CC5611B8</code> <code>5F1492343F6CC01E9F793B766A995C17</code> <code>4C92D49938F9D555087A46E16FBB45B5</code> <code>21C75B6E6288D1ED2FA4BAFAF3B094FC</code> <code>59EBB154E6EB42AA9C615F6450F2B2A6</code> <code>0EE4C7908435EC3ABC18422841B5D3CE</code> <code>DA9CDFF0192D7B8D7FCB29A8906E1158</code> <code>C85C72C3CD3DB849891C1BDBAB2649B9</code> <code>AA330487B6CA144E99E591D3063D886C</code> <code>0AADDEF67845E9D9EC78A4968405E86C</code> <code>1EAE292B41FC07797DDC98669893A234</code> <code>329B365603FEB638DD879C7A610FF54F</code> <code>053B8218CB95FC184D512339CEA169E1</code> <code>D835BB1D477CACEB89C5DCF9F09A4CE1</code> <code>7535BA8255E4E6EB2B62A6E84C48F5B9</code> <code>F9E7DC81A4A9A1ACBC427EC5823A7FBA</code> <code>2ACB9939D1230A5E1135ABC6886B3EFE</code> <code>E09F0467ECA2E6E3B97F622121C1A755</code> <code>2EE955D873BD8DAA8B3C13F60764768B</code><br> <code>A9550853</code></td>
|
|
|
|
|
<td><code>FE500100DAED234295F32CE16D9A890D</code> <code>3BB3EBB0089477B3E56389BF9ABAC8BF</code> <code>9D623F4BEB358FF69016728C71C8EC39</code> <code>C8ED3502CF04BEA04F42BFCF0A47EF3F</code> <code>D1001AECCD29A9CD5AF88870AB777937</code> <code>DC5F001377E902097356936DB5DF4BBD</code> <code>FFDB5C76DB57245A203A6E8ADAF72E03</code> <code>F499209576532A145997970CC0872B23</code> <code>D148FC4B9D6BD4A16680C616AA82E5C9</code> <code>C9F3D00EA3DF9E1EA8187E1ADBBECC73</code> <code>250F1D39CD77339B442062FC58D0E7E4</code> <code>FB72CD1245EFBE46EB2A4CE662D09F30</code> <code>8E7CB09A2518E3BD3C645C4B57F776AE</code> <code>7409CD625C6D6564082AEC095AD2201B</code> <code>760C1610235198DBF2B58B79A64B7ADA</code> <code>ADD2FABD8D4F8AFF274C6FB64228EA45</code> <code>C5D3EED2D0B9A122E32259EB511C4532</code> <code>673DF4D4DF7BE8F7C7B8C36080E2E3B9</code> <code>59614B6EE7827F502113028E0FEA3821</code> <code>EEF7FBDA8BC7B30AFF1D18AF330C34D9</code> <code>D42046E4DCDC267172530BE1AF9239DC</code><br> <code>544B8E9C</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 = 672CE08166CEE9DB5C45EDB97C9721FE361698F28EBE9DDC0DA6E270E6C61DF56C7E0FD5A09CB06754AC7305B3E151020DC4DBC5D4012BE2A4A9C891A0E742D0F6B61C873C77554B3FAC552CCFF51FBCF15F6ADA8EA08D7B4550392A29473408415D0773F8D35351CC636DA33141BA14AA1B78EE06CCFCA023354113B266D88CC7A0067C1465E16E52E7EAFC88E0F37F31FFE966AAD255F12D2D26E678F59B6F37A242C2C939B03E76760DC6B667ABB235031A38B1213935F5C67DBC5C6AF372B860ADE71334B04043373D9054DB14D2C45ED29E3D12CED9D3D239A4851C179AB86BC6C86791630176322E0D17B0EB826095CB51DE03B7E214F45E689DD4291F</code></pre>
|
|
|
|
|
<pre><code>auth_key = 0AF0963E0967E2440FCBC0FDB90EA6E2D9F2B82B9D86CA2F567C9B0594306F83691A9406A154B2012DBA785C49C198382197532FEDAAF30F50AD448AB47249C04B09077575D03B9B747CF08315B73FF186EE4F5F76447A8A72B3B7A07B5E549EB7640611A53297BE576ACF9ADF1B506EB91DF1906ACE4948DFA4600CD4376E537BADDC249860A04C951ADB1E2C23698AEEB7E059F1B2624B641D2544980AF36627DB121D7F89F534FC0EDDF6B7E2ADDD5AB01BB6A6D87DC2C71BC9B94C92D4C27CEA3645ADE63CCFCEA9DEDA2983F08CAC8D304E0B7B0959CBC9697ABDD0CA4C42FAD9A4DEB8953F94DB29DAD00D061441164BACE9381A241E5DE0D1D8AA078A</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 90 0E 24 D7 7C AE 66
|
|
|
|
|
0010 | A8 00 00 00 34 F7 CB 3B 98 34 7C 45 20 EB E0 DA
|
|
|
|
|
0020 | DB F9 DE F5 87 F6 3A 18 9A 91 88 40 20 68 F2 31
|
|
|
|
|
0030 | 91 D9 0C C3 31 3C FE D2 2A B7 BC 7D 2D 87 D7 B8
|
|
|
|
|
0040 | 9D 96 2F 86 77 36 53 88</code></pre>
|
|
|
|
|
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A4 F4 01 85 62 AF 66
|
|
|
|
|
0010 | 90 00 00 00 34 F7 CB 3B 9A 35 B3 4B AD 37 DF 53
|
|
|
|
|
0020 | 8D 3F E4 B7 DC 8C 94 D7 FC F3 12 95 0D 42 D9 8F
|
|
|
|
|
0030 | 97 8F 0D F9 3C CE CD 0D 9A 1B 8B ED 6E 22 DB FA
|
|
|
|
|
0040 | 13 A6 C1 FB 72 72 A0 4A</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>01900E24D77CAE66</code></td>
|
|
|
|
|
<td><code>01A4F4018562AF66</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>A8000000</code> (168 in decimal)</td>
|
|
|
|
|
<td><code>90000000</code> (144 in decimal)</td>
|
|
|
|
|
<td>Message body length</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|
|
|
|
<tr>
|
|
|
|
|
<td>nonce</td>
|
|
|
|
|
<td>24, 16</td>
|
|
|
|
|
<td><code>98347C4520EBE0DADBF9DEF587F63A18</code></td>
|
|
|
|
|
<td><code>9A35B34BAD37DF538D3FE4B7DC8C94D7</code></td>
|
|
|
|
|
<td>Value generated by client in Step 1</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>server_nonce</td>
|
|
|
|
|
<td>40, 16</td>
|
|
|
|
|
<td><code>9A9188402068F23191D90CC3313CFED2</code></td>
|
|
|
|
|
<td><code>FCF312950D42D98F978F0DF93CCECD0D</code></td>
|
|
|
|
|
<td>Value received from server in Step 2</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>new_nonce_hash1</td>
|
|
|
|
|
<td>56, 16</td>
|
|
|
|
|
<td><code>2AB7BC7D2D87D7B89D962F8677365388</code></td>
|
|
|
|
|
<td><code>9A1B8BED6E22DBFA13A6C1FB7272A04A</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>
|
|
|
|
|