Update content of files

This commit is contained in:
GitHub Action 2023-12-15 20:25:06 +00:00
parent a3f67aa656
commit 7e9959ecec
4 changed files with 211 additions and 215 deletions

View file

@ -530,7 +530,7 @@ Note that the stickerset can be fetched using <a href="/constructor/inputSticker
<h4><a class="anchor" href="#transcribe-audio-trial-weekly-number" id="transcribe-audio-trial-weekly-number" name="transcribe-audio-trial-weekly-number"><i class="anchor-icon"></i></a><code>transcribe_audio_trial_weekly_number</code></h4>
<p>The maximum number of <a href="/api/transcribe">speech recognition »</a> calls per week for non-<a href="/api/premium">Premium</a> users. (integer)</p>
<h4><a class="anchor" href="#transcribe-audio-trial-duration-max" id="transcribe-audio-trial-duration-max" name="transcribe-audio-trial-duration-max"><i class="anchor-icon"></i></a><code>transcribe_audio_trial_duration_max</code></h4>
<p>The maximum allowed duration of media for <a href="/api/transcribe">speech recognition »</a> for non-<a href="/api/premium">Premium</a> users. (integer)</p>
<p>The maximum allowed duration of media in seconds for <a href="/api/transcribe">speech recognition »</a> for non-<a href="/api/premium">Premium</a> users. (integer)</p>
<h4><a class="anchor" href="#recommended-channels-limit-default" id="recommended-channels-limit-default" name="recommended-channels-limit-default"><i class="anchor-icon"></i></a><code>recommended_channels_limit_default</code></h4>
<p>The maximum number of similar channels that can be recommended by <a href="/method/channels.getChannelRecommendations">channels.getChannelRecommendations»</a> to non-<a href="/api/premium">Premium</a> users. (integer)</p>
<h4><a class="anchor" href="#recommended-channels-limit-premium" id="recommended-channels-limit-premium" name="recommended-channels-limit-premium"><i class="anchor-icon"></i></a><code>recommended_channels_limit_premium</code></h4>

View file

@ -58,8 +58,8 @@
The returned <a href="/constructor/messages.transcribedAudio">messages.transcribedAudio</a> constructor will have the <code>pending</code> flag set if the transcription is still in progress and the transcribed text contained in <code>text</code> will be updated in future with <a href="/constructor/updateTranscribedAudio">updateTranscribedAudio</a> updates.<br>
These updates will contain the updated <code>text</code> with the same <code>transcription_id</code> returned in the first <a href="/constructor/messages.transcribedAudio">messages.transcribedAudio</a>, and the <code>pending</code> flag will be set if the transcription is still in progress. </p>
<p>A transcription can then be rated as good or bad using <a href="/method/messages.rateTranscribedAudio">messages.rateTranscribedAudio</a>. </p>
<p>Users without a <a href="/api/premium">Telegram Premium</a> subscription can only transcribe <a href="/api/config#transcribe-audio-trial-weekly-number">transcribe_audio_trial_weekly_number</a> messages per week, of maximum duration equal to <a href="/api/config#transcribe-audio-trial-duration-max">transcribe_audio_trial_duration_max</a>.<br>
For non-premium users, the <code>trial_remains_num</code> and <code>trial_remains_until_date</code> flags of the <a href="/constructor/messages.transcribedAudio">messages.transcribedAudio</a> will also be set, indicating the remaining transcriptions, and the date when the <code>trial_remains_num</code> counter will be reset to the maximum value of <a href="/api/config#transcribe-audio-trial-weekly-number">transcribe_audio_trial_weekly_number</a>.</p></div>
<p>Users without a <a href="/api/premium">Telegram Premium</a> subscription can only transcribe <a href="/api/config#transcribe-audio-trial-weekly-number">transcribe_audio_trial_weekly_number</a> messages per week, of maximum duration equal to <a href="/api/config#transcribe-audio-trial-duration-max">transcribe_audio_trial_duration_max</a> seconds.<br>
For non-premium users, the <code>trial_remains_num</code> and <code>trial_remains_until_date</code> flags of <a href="/constructor/messages.transcribedAudio">messages.transcribedAudio</a> will also be set, indicating the remaining transcriptions, and the date when the <code>trial_remains_num</code> counter will be reset to the maximum value of <a href="/api/config#transcribe-audio-trial-weekly-number">transcribe_audio_trial_weekly_number</a>.</p></div>
</div>

View file

@ -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 B8 66 08 00 6B AC 7C 65
0010 | 14 00 00 00 F1 8E 7E BE 40 D6 59 B1 27 2C F7 5A
0020 | EE A1 83 3A 66 BE D1 DA</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 34 A1 0A 00 29 B0 7C 65
0010 | 14 00 00 00 F1 8E 7E BE 28 DF 3D CE 6D 19 69 73
0020 | E2 B3 98 84 CA 1C 70 6A</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>B86608006BAC7C65</code></td>
<td><code>34A10A0029B07C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -95,7 +95,7 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</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 0C 7F 03 6D AC 7C 65
0010 | 78 00 00 00 63 24 16 05 40 D6 59 B1 27 2C F7 5A
0020 | EE A1 83 3A 66 BE D1 DA EB A4 DF 47 84 75 8E BA
0030 | 7D B4 DA 94 FF AB 83 FD 08 16 4E C3 0C A4 B3 9E
0040 | 13 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 9C 2D 34 2A B0 7C 65
0010 | 7C 00 00 00 63 24 16 05 28 DF 3D CE 6D 19 69 73
0020 | E2 B3 98 84 CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E
0030 | 15 57 A9 EF B6 58 A4 FB 08 33 79 E4 04 1E 66 56
0040 | 4F 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>010C7F036DAC7C65</code></td>
<td><code>019C2D342AB07C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>78000000</code> (120 in decimal)</td>
<td><code>7C000000</code> (124 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>08164EC30CA4B39E13000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1607436576088104467</td>
<td><code>083379E4041E66564F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3709246474457339471</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 &lt; q.</h5>
<!-- start pq -->
<pre><code>pq = 1607436576088104467</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1607436576088104467 = 1206120829 * 1332732623</code></p>
<pre><code>p = 1206120829
q = 1332732623</code></pre>
<pre><code>pq = 3709246474457339471</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3709246474457339471 = 1918298131 * 1933613141</code></p>
<pre><code>p = 1918298131
q = 1933613141</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 16 4E C3 0C A4 B3 9E 13 00 00 00
0010 | 04 47 E3 F1 7D 00 00 00 04 4F 6F E2 CF 00 00 00
0020 | 40 D6 59 B1 27 2C F7 5A EE A1 83 3A 66 BE D1 DA
0030 | EB A4 DF 47 84 75 8E BA 7D B4 DA 94 FF AB 83 FD
0040 | AD EB 4D 91 E6 F8 10 59 07 33 3D A4 D6 32 39 FD
0050 | 6E 51 BD 27 66 2A B5 FB 26 9A 15 57 ED 3F 34 34
<pre><code>0000 | 95 5F F5 A9 08 33 79 E4 04 1E 66 56 4F 00 00 00
0010 | 04 72 56 E8 13 00 00 00 04 73 40 98 55 00 00 00
0020 | 28 DF 3D CE 6D 19 69 73 E2 B3 98 84 CA 1C 70 6A
0030 | B5 0F D6 A5 B4 40 E5 5E 15 57 A9 EF B6 58 A4 FB
0040 | FA BF 0C 9E E9 1E 2E 61 AD A4 AB 68 5C D4 1D 55
0050 | 2E BB A3 AF B9 11 B0 56 43 BD E3 0A 32 36 4D F3
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 = 1332732623</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>08164EC30CA4B39E13000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1607436576088104467</td>
<td><code>083379E4041E66564F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3709246474457339471</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>0447E3F17D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1206120829</td>
<td><code>047256E813000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1918298131</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>044F6FE2CF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1332732623</td>
<td><code>0473409855000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1933613141</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>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>ADEB4D91E6F8105907333DA4D63239FD</code> <code>6E51BD27662AB5FB269A1557ED3F3434</code></td>
<td><code>FABF0C9EE91E2E61ADA4AB685CD41D55</code> <code>2EBBA3AFB911B05643BDE30A32364DF3</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1332732623</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 = 955FF5A908164EC30CA4B39E130000000447E3F17D000000044F6FE2CF00000040D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FDADEB4D91E6F8105907333DA4D63239FD6E51BD27662AB5FB269A1557ED3F343402000000
random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471ADE48CAA72A180EFEDA49B18393E545BB01909B3A8A30D4607EA9BB0EA4E24D950F905460BFFD80E2C24592514421A062D69A04F8CC37BADDC4970DC113A2FAB</code></pre>
<pre><code>data = 955FF5A9083379E4041E66564F000000047256E813000000047340985500000028DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FBFABF0C9EE91E2E61ADA4AB685CD41D552EBBA3AFB911B05643BDE30A32364DF302000000
random_padding_bytes = C0C6CA28A3F02950BA8A268593B6755DECD2ED8CC8031C84F5DCB1FE3865AB0AA12C2A10CDD64D2B50C7DBF5DF31759E1B6D13EF194E353CD8F15D3B63FF12DCA280BFF086FEAA1956A0E132FAC23D1476121078C8F59695F43BAD44</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 = C0CB80E9A662A637CD5BEEE6DD739B1327050614AC82763F8728DB2080FE229CF551CDBC5529DB1AA10B489ED09C4569810AE5CB8D5644F6A66929224B206A984CD48132B8C8B3EDABCC2E13C80DEFC44C2718E3C933CAA3E4AD92A461426FDA5A420B3A6C96EA0A8E879FD46C4A9E473DE0E99F6B5A3090E8B98E7FD34BAFF26FC8A093F77FC1715536B4D044043DD78B28C40749FF137C3F8A2D16649795B799785A48E9316441E6EDCA30BEED7729A2793D842295CF9923B333EA3DD7DAF424AA7493F19BFF0D936E9D136357CA292ED0DE718DBF11E62EF5323AAB3487E887A1B952ED3D4865F90386AF9C05882C77AAF573A11C489DEF3D305863EF39FB</code></pre>
<pre><code>encrypted_data = 83B6E78FE298AE6124F4C4E6C03013F83593418483E74D81028E04313DB3A41B23B07A6950BE056CF4F26A17DD2FE0659DC16AFAF70300938D468BED7BDF08E350907FCD107AA88D96C6BE51DF3B215FA49F44B8FAB03D6CC3B23DCCD43C808E6506682E331D0D26C277DA65D89DAE4BD0A1DBC23E13958C82B5CEE81566ACF12543FCC5D5BA0AA394C56DF5FCCE09D8385CCC122E6DE21E9BA27814207EEBC7963BE1607E798140869B7CE8EB128534FB4637A277BD58D36941F44D3425DE60A167952CFD6CE4233328653A0F9248AC3C7FD737B823CDA55D4D7F81ECD009346334289524BB0D07EC7DF7F05D38BCBDEFD839594AD74014993E7F8A2D632E17</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 4C 21 00 00 6C AC 7C 65
0010 | 40 01 00 00 BE E4 12 D7 40 D6 59 B1 27 2C F7 5A
0020 | EE A1 83 3A 66 BE D1 DA EB A4 DF 47 84 75 8E BA
0030 | 7D B4 DA 94 FF AB 83 FD 04 47 E3 F1 7D 00 00 00
0040 | 04 4F 6F E2 CF 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 C0 CB 80 E9 A6 62 A6 37 CD 5B EE E6
0060 | DD 73 9B 13 27 05 06 14 AC 82 76 3F 87 28 DB 20
0070 | 80 FE 22 9C F5 51 CD BC 55 29 DB 1A A1 0B 48 9E
0080 | D0 9C 45 69 81 0A E5 CB 8D 56 44 F6 A6 69 29 22
0090 | 4B 20 6A 98 4C D4 81 32 B8 C8 B3 ED AB CC 2E 13
00A0 | C8 0D EF C4 4C 27 18 E3 C9 33 CA A3 E4 AD 92 A4
00B0 | 61 42 6F DA 5A 42 0B 3A 6C 96 EA 0A 8E 87 9F D4
00C0 | 6C 4A 9E 47 3D E0 E9 9F 6B 5A 30 90 E8 B9 8E 7F
00D0 | D3 4B AF F2 6F C8 A0 93 F7 7F C1 71 55 36 B4 D0
00E0 | 44 04 3D D7 8B 28 C4 07 49 FF 13 7C 3F 8A 2D 16
00F0 | 64 97 95 B7 99 78 5A 48 E9 31 64 41 E6 ED CA 30
0100 | BE ED 77 29 A2 79 3D 84 22 95 CF 99 23 B3 33 EA
0110 | 3D D7 DA F4 24 AA 74 93 F1 9B FF 0D 93 6E 9D 13
0120 | 63 57 CA 29 2E D0 DE 71 8D BF 11 E6 2E F5 32 3A
0130 | AB 34 87 E8 87 A1 B9 52 ED 3D 48 65 F9 03 86 AF
0140 | 9C 05 88 2C 77 AA F5 73 A1 1C 48 9D EF 3D 30 58
0150 | 63 EF 39 FB</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 18 24 0D 00 2A B0 7C 65
0010 | 40 01 00 00 BE E4 12 D7 28 DF 3D CE 6D 19 69 73
0020 | E2 B3 98 84 CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E
0030 | 15 57 A9 EF B6 58 A4 FB 04 72 56 E8 13 00 00 00
0040 | 04 73 40 98 55 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 83 B6 E7 8F E2 98 AE 61 24 F4 C4 E6
0060 | C0 30 13 F8 35 93 41 84 83 E7 4D 81 02 8E 04 31
0070 | 3D B3 A4 1B 23 B0 7A 69 50 BE 05 6C F4 F2 6A 17
0080 | DD 2F E0 65 9D C1 6A FA F7 03 00 93 8D 46 8B ED
0090 | 7B DF 08 E3 50 90 7F CD 10 7A A8 8D 96 C6 BE 51
00A0 | DF 3B 21 5F A4 9F 44 B8 FA B0 3D 6C C3 B2 3D CC
00B0 | D4 3C 80 8E 65 06 68 2E 33 1D 0D 26 C2 77 DA 65
00C0 | D8 9D AE 4B D0 A1 DB C2 3E 13 95 8C 82 B5 CE E8
00D0 | 15 66 AC F1 25 43 FC C5 D5 BA 0A A3 94 C5 6D F5
00E0 | FC CE 09 D8 38 5C CC 12 2E 6D E2 1E 9B A2 78 14
00F0 | 20 7E EB C7 96 3B E1 60 7E 79 81 40 86 9B 7C E8
0100 | EB 12 85 34 FB 46 37 A2 77 BD 58 D3 69 41 F4 4D
0110 | 34 25 DE 60 A1 67 95 2C FD 6C E4 23 33 28 65 3A
0120 | 0F 92 48 AC 3C 7F D7 37 B8 23 CD A5 5D 4D 7F 81
0130 | EC D0 09 34 63 34 28 95 24 BB 0D 07 EC 7D F7 F0
0140 | 5D 38 BC BD EF D8 39 59 4A D7 40 14 99 3E 7F 8A
0150 | 2D 63 2E 17</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 = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>4C2100006CAC7C65</code></td>
<td><code>18240D002AB07C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -363,25 +363,25 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>0447E3F17D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1206120829</td>
<td><code>047256E813000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1918298131</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>044F6FE2CF000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1332732623</td>
<td><code>0473409855000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1933613141</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 = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE000100C0CB80E9A662A637CD5BEEE6</code> <code>DD739B1327050614AC82763F8728DB20</code> <code>80FE229CF551CDBC5529DB1AA10B489E</code> <code>D09C4569810AE5CB8D5644F6A6692922</code> <code>4B206A984CD48132B8C8B3EDABCC2E13</code> <code>C80DEFC44C2718E3C933CAA3E4AD92A4</code> <code>61426FDA5A420B3A6C96EA0A8E879FD4</code> <code>6C4A9E473DE0E99F6B5A3090E8B98E7F</code> <code>D34BAFF26FC8A093F77FC1715536B4D0</code> <code>44043DD78B28C40749FF137C3F8A2D16</code> <code>649795B799785A48E9316441E6EDCA30</code> <code>BEED7729A2793D842295CF9923B333EA</code> <code>3DD7DAF424AA7493F19BFF0D936E9D13</code> <code>6357CA292ED0DE718DBF11E62EF5323A</code> <code>AB3487E887A1B952ED3D4865F90386AF</code> <code>9C05882C77AAF573A11C489DEF3D3058</code><br> <code>63EF39FB</code></td>
<td><code>FE00010083B6E78FE298AE6124F4C4E6</code> <code>C03013F83593418483E74D81028E0431</code> <code>3DB3A41B23B07A6950BE056CF4F26A17</code> <code>DD2FE0659DC16AFAF70300938D468BED</code> <code>7BDF08E350907FCD107AA88D96C6BE51</code> <code>DF3B215FA49F44B8FAB03D6CC3B23DCC</code> <code>D43C808E6506682E331D0D26C277DA65</code> <code>D89DAE4BD0A1DBC23E13958C82B5CEE8</code> <code>1566ACF12543FCC5D5BA0AA394C56DF5</code> <code>FCCE09D8385CCC122E6DE21E9BA27814</code> <code>207EEBC7963BE1607E798140869B7CE8</code> <code>EB128534FB4637A277BD58D36941F44D</code> <code>3425DE60A167952CFD6CE4233328653A</code> <code>0F9248AC3C7FD737B823CDA55D4D7F81</code> <code>ECD009346334289524BB0D07EC7DF7F0</code> <code>5D38BCBDEFD839594AD74014993E7F8A</code><br> <code>2D632E17</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
<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 CC 71 B0 6D AC 7C 65
0010 | A8 02 00 00 5C 07 E8 D0 40 D6 59 B1 27 2C F7 5A
0020 | EE A1 83 3A 66 BE D1 DA EB A4 DF 47 84 75 8E BA
0030 | 7D B4 DA 94 FF AB 83 FD FE 50 02 00 AC 5B 51 4F
0040 | C5 8A 8D B4 C5 AF BC C9 E0 F0 41 D7 93 21 F0 24
0050 | 58 EB 97 26 D3 36 7C 68 72 68 8A C4 10 72 7D C4
0060 | C6 BF 7D 2E 25 29 9E FE 20 62 8F B4 64 68 DF 37
0070 | DC 4C DD 60 30 30 87 77 B0 65 60 32 F7 44 31 4D
0080 | 49 42 80 1B DD 3B 52 61 0C 32 3A 5A AF 54 0E 4F
0090 | C5 80 1E F4 B2 F6 1C DE 9C 0E B8 0A 17 98 A2 44
00A0 | 99 CA 73 39 04 E9 9B B7 BF 0C 39 81 C9 96 F4 99
00B0 | 66 89 09 18 1A 4C 56 31 01 E5 5C EF C3 66 B4 1B
00C0 | B0 E9 B0 AC 40 7B 76 24 3F D1 80 BF 25 F8 95 0B
00D0 | 7C 04 90 E6 02 10 26 32 33 C5 5D 6A A8 88 D8 5F
00E0 | 72 02 38 D0 14 98 BA 05 ED 4C 1C 9B D2 3E 6B FF
00F0 | C3 71 2A ED 44 A9 81 1C 4E 15 0E AD 9B FC 24 4F
0100 | 1D 8B 0E 29 F1 0F D6 B1 7C 11 6D B5 5D 23 E6 72
0110 | 7D 8D 26 F4 C7 B3 59 37 44 E6 98 76 24 75 57 E1
0120 | FA 4F B4 8E 7F 1D 6C 30 83 3A B2 29 D2 57 8D E5
0130 | 25 9A BA DC 09 40 DE CD CB 76 3C 52 37 2F 33 78
0140 | EC 65 64 EF CC BA 2A 0F 78 5B 57 12 CE B6 52 92
0150 | 03 97 45 A3 3A DB 5D CA ED 6E D7 46 63 F7 36 1A
0160 | 95 B7 BF 43 61 55 97 15 0F FC 8C 21 80 FE F1 8F
0170 | 2D 83 B9 4C 0A 11 1F 45 D2 B7 32 83 CE 7B FD 52
0180 | CF 65 E5 45 4D 67 24 5D B2 92 23 1B FF 5E 68 63
0190 | 77 E7 DC 19 56 3C 19 F3 01 67 8F 66 DE A5 16 12
01A0 | F1 78 56 AB FC 78 7A F0 FD 6A 39 CE D7 43 E0 05
01B0 | 33 AA 84 44 D9 C3 CF AD 4A FC CE 95 1A B1 4D A3
01C0 | 01 92 AE AA 21 31 68 CB F1 42 D7 1B 0E 55 51 1E
01D0 | 97 C4 67 FF 58 7F C3 D6 C3 BC FD 06 E2 33 F9 55
01E0 | 08 D8 97 74 91 16 55 BC 2C 51 98 DB 6B 1B AE EF
01F0 | FE 5E 54 41 AA A6 52 BF 0E E4 84 F0 1A 5B 95 75
0200 | 2B 30 02 4B 9B 58 65 19 41 39 1C 7E 13 D0 96 1E
0210 | 0E F8 83 50 5A 0A B3 F0 52 A9 8C A6 C4 F2 A4 2B
0220 | F5 E5 35 D6 83 7E B9 BE 92 CA 2F 03 A5 BB 4A 0A
0230 | B0 DE EB 22 69 F4 40 19 81 BE 5B B6 A1 6F 1A 86
0240 | 08 A4 5D 37 11 C6 F8 6B B3 9A 2F EA 26 89 0A 98
0250 | 45 83 F0 67 33 6D F8 05 A6 29 FB E9 FA 67 20 EA
0260 | 8E B2 C4 DC 0C 05 59 D7 8D 2E E4 E8 C4 E7 8B 83
0270 | 16 71 E4 6B 8F 72 48 02 74 69 3F 51 23 D2 F8 3A
0280 | E8 C9 0A 70 F9 A8 47 C8 78 08 81 05</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 DC EB E6 2A B0 7C 65
0010 | 78 02 00 00 5C 07 E8 D0 28 DF 3D CE 6D 19 69 73
0020 | E2 B3 98 84 CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E
0030 | 15 57 A9 EF B6 58 A4 FB FE 50 02 00 BF 52 F4 43
0040 | 9E 2C 38 41 7E 09 79 81 79 3E F5 55 1F 7A 74 FE
0050 | 89 B4 96 33 E8 9A 96 7F EC F0 F0 84 56 29 81 1B
0060 | 5C E6 BD ED C2 D4 DE 16 FD 41 15 DB 98 D5 B2 B8
0070 | 3C 63 9F 1E 38 4A 65 BF EB 9D 11 03 E8 CE C7 92
0080 | 4E 8B 21 C5 84 20 22 94 D1 C8 7D 8D 40 EE 49 54
0090 | 89 A2 2E E9 7E 62 2C D1 16 D8 93 06 4F D7 F2 1C
00A0 | 41 B2 7E 3B DD 1D AC 60 53 7A D1 16 4E 86 95 C6
00B0 | 64 A1 D3 29 D1 E8 20 67 9A 05 04 9F CD A0 6A 45
00C0 | 5D AB 2F 3F B6 A2 99 F0 93 96 26 B0 11 FE D0 88
00D0 | 64 BA 5D 0D 3C E9 23 54 7D B8 68 82 AB 23 C9 1A
00E0 | 0B BE 68 22 F1 1F 49 23 75 13 EB AD C6 2F D3 92
00F0 | CB 14 DA 49 4A 89 D2 73 DE 27 9C 49 4B CA 8F D9
0100 | A7 F9 D4 A2 D0 60 62 0D 52 82 BE 1C CA 07 28 CD
0110 | A0 74 A4 E3 40 D9 A8 38 15 29 E7 F2 1C 0C DA B9
0120 | F2 D8 98 08 0E B9 34 1F AA 78 86 FA 3C 20 A5 82
0130 | 09 C9 A7 8D 8E EE D0 97 2C 66 33 56 53 8D 77 07
0140 | F8 CF 3C 3D 20 6C 62 B3 83 3C 88 20 A3 B0 34 ED
0150 | FD A1 7F 69 47 4B 55 FC 74 D5 7B 19 4B 08 00 C2
0160 | E8 99 36 92 01 31 13 AA 0F A0 1A 00 85 D6 BA DB
0170 | D6 A2 CC 91 68 AB C2 CA EF AF BA 54 CD 01 85 79
0180 | 5F 95 97 96 72 7C 66 57 47 DA 9B F1 D5 5B 84 5B
0190 | 42 B7 44 77 87 CC 46 BE AE EA 35 AD 98 09 A0 D1
01A0 | 90 20 FC 57 FC 04 C9 DB D6 3C 1B E7 93 57 F9 48
01B0 | 05 2C 23 3E 1D CF 3B BF A6 56 57 22 B7 F8 CD 81
01C0 | 2C 79 8D C0 A4 D9 15 81 B7 36 26 59 81 49 37 30
01D0 | 4E 4A 44 76 2F 54 1F 8A 89 A3 B2 47 61 BA FA 9B
01E0 | 2D D3 3E EE CC 64 74 A9 D4 5B 67 E6 17 3A 26 08
01F0 | 4F FA 56 BD 6E C1 A2 C5 4C DE CA 30 DA 7A 50 DC
0200 | 6F 8E 57 ED AC 69 C1 AF 82 DE 6D 7A 0B 95 2C 7A
0210 | EF 63 7F 56 53 0B B7 85 37 85 03 D1 CD 30 A1 52
0220 | 36 31 63 D3 D1 CF 02 03 D1 92 1A 73 A0 3A 20 54
0230 | E0 28 E5 2D F9 E3 9B 6A 00 6E 28 70 A9 89 8A 45
0240 | 3C 82 5A 03 54 FC EC 47 5A DF 1C 5D 7B F4 7D 2A
0250 | A0 D8 0C 72 63 F8 38 86 AE 73 48 E9 F9 2D 4B 4B
0260 | 80 B3 47 73 81 30 2A 4E 47 3A 90 96 E2 40 27 FB
0270 | 78 1B F8 C2 E7 5A A2 73 5F 86 8A C2 72 2B 00 87
0280 | E8 D6 5D C6 0F AE BE EA 06 21 C9 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 = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01CC71B06DAC7C65</code></td>
<td><code>01DCEBE62AB07C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>A8020000</code> (680 in decimal)</td>
<td><code>78020000</code> (632 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200AC5B514FC58A8DB4C5AFBCC9</code> <code>E0F041D79321F02458EB9726D3367C68</code> <code>72688AC410727DC4C6BF7D2E25299EFE</code> <code>20628FB46468DF37DC4CDD6030308777</code> <code>B0656032F744314D4942801BDD3B5261</code> <code>0C323A5AAF540E4FC5801EF4B2F61CDE</code> <code>9C0EB80A1798A24499CA733904E99BB7</code> <code>BF0C3981C996F499668909181A4C5631</code> <code>01E55CEFC366B41BB0E9B0AC407B7624</code> <code>3FD180BF25F8950B7C0490E602102632</code> <code>33C55D6AA888D85F720238D01498BA05</code> <code>ED4C1C9BD23E6BFFC3712AED44A9811C</code> <code>4E150EAD9BFC244F1D8B0E29F10FD6B1</code> <code>7C116DB55D23E6727D8D26F4C7B35937</code> <code>44E69876247557E1FA4FB48E7F1D6C30</code> <code>833AB229D2578DE5259ABADC0940DECD</code> <code>CB763C52372F3378EC6564EFCCBA2A0F</code> <code>785B5712CEB65292039745A33ADB5DCA</code> <code>ED6ED74663F7361A95B7BF4361559715</code> <code>0FFC8C2180FEF18F2D83B94C0A111F45</code> <code>D2B73283CE7BFD52CF65E5454D67245D</code> <code>B292231BFF5E686377E7DC19563C19F3</code> <code>01678F66DEA51612F17856ABFC787AF0</code> <code>FD6A39CED743E00533AA8444D9C3CFAD</code> <code>4AFCCE951AB14DA30192AEAA213168CB</code> <code>F142D71B0E55511E97C467FF587FC3D6</code> <code>C3BCFD06E233F95508D89774911655BC</code> <code>2C5198DB6B1BAEEFFE5E5441AAA652BF</code> <code>0EE484F01A5B95752B30024B9B586519</code> <code>41391C7E13D0961E0EF883505A0AB3F0</code> <code>52A98CA6C4F2A42BF5E535D6837EB9BE</code> <code>92CA2F03A5BB4A0AB0DEEB2269F44019</code> <code>81BE5BB6A16F1A8608A45D3711C6F86B</code> <code>B39A2FEA26890A984583F067336DF805</code> <code>A629FBE9FA6720EA8EB2C4DC0C0559D7</code> <code>8D2EE4E8C4E78B831671E46B8F724802</code> <code>74693F5123D2F83AE8C90A70F9A847C8</code><br> <code>78088105</code></td>
<td><code>FE500200BF52F4439E2C38417E097981</code> <code>793EF5551F7A74FE89B49633E89A967F</code> <code>ECF0F0845629811B5CE6BDEDC2D4DE16</code> <code>FD4115DB98D5B2B83C639F1E384A65BF</code> <code>EB9D1103E8CEC7924E8B21C584202294</code> <code>D1C87D8D40EE495489A22EE97E622CD1</code> <code>16D893064FD7F21C41B27E3BDD1DAC60</code> <code>537AD1164E8695C664A1D329D1E82067</code> <code>9A05049FCDA06A455DAB2F3FB6A299F0</code> <code>939626B011FED08864BA5D0D3CE92354</code> <code>7DB86882AB23C91A0BBE6822F11F4923</code> <code>7513EBADC62FD392CB14DA494A89D273</code> <code>DE279C494BCA8FD9A7F9D4A2D060620D</code> <code>5282BE1CCA0728CDA074A4E340D9A838</code> <code>1529E7F21C0CDAB9F2D898080EB9341F</code> <code>AA7886FA3C20A58209C9A78D8EEED097</code> <code>2C663356538D7707F8CF3C3D206C62B3</code> <code>833C8820A3B034EDFDA17F69474B55FC</code> <code>74D57B194B0800C2E8993692013113AA</code> <code>0FA01A0085D6BADBD6A2CC9168ABC2CA</code> <code>EFAFBA54CD0185795F959796727C6657</code> <code>47DA9BF1D55B845B42B7447787CC46BE</code> <code>AEEA35AD9809A0D19020FC57FC04C9DB</code> <code>D63C1BE79357F948052C233E1DCF3BBF</code> <code>A6565722B7F8CD812C798DC0A4D91581</code> <code>B7362659814937304E4A44762F541F8A</code> <code>89A3B24761BAFA9B2DD33EEECC6474A9</code> <code>D45B67E6173A26084FFA56BD6EC1A2C5</code> <code>4CDECA30DA7A50DC6F8E57EDAC69C1AF</code> <code>82DE6D7A0B952C7AEF637F56530BB785</code> <code>378503D1CD30A152363163D3D1CF0203</code> <code>D1921A73A03A2054E028E52DF9E39B6A</code> <code>006E2870A9898A453C825A0354FCEC47</code> <code>5ADF1C5D7BF47D2AA0D80C7263F83886</code> <code>AE7348E9F92D4B4B80B3477381302A4E</code> <code>473A9096E24027FB781BF8C2E75AA273</code> <code>5F868AC2722B0087E8D65DC60FAEBEEA</code><br> <code>0621C9B6</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
<!-- 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 = AC5B514FC58A8DB4C5AFBCC9E0F041D79321F02458EB9726D3367C6872688AC410727DC4C6BF7D2E25299EFE20628FB46468DF37DC4CDD6030308777B0656032F744314D4942801BDD3B52610C323A5AAF540E4FC5801EF4B2F61CDE9C0EB80A1798A24499CA733904E99BB7BF0C3981C996F499668909181A4C563101E55CEFC366B41BB0E9B0AC407B76243FD180BF25F8950B7C0490E60210263233C55D6AA888D85F720238D01498BA05ED4C1C9BD23E6BFFC3712AED44A9811C4E150EAD9BFC244F1D8B0E29F10FD6B17C116DB55D23E6727D8D26F4C7B3593744E69876247557E1FA4FB48E7F1D6C30833AB229D2578DE5259ABADC0940DECDCB763C52372F3378EC6564EFCCBA2A0F785B5712CEB65292039745A33ADB5DCAED6ED74663F7361A95B7BF43615597150FFC8C2180FEF18F2D83B94C0A111F45D2B73283CE7BFD52CF65E5454D67245DB292231BFF5E686377E7DC19563C19F301678F66DEA51612F17856ABFC787AF0FD6A39CED743E00533AA8444D9C3CFAD4AFCCE951AB14DA30192AEAA213168CBF142D71B0E55511E97C467FF587FC3D6C3BCFD06E233F95508D89774911655BC2C5198DB6B1BAEEFFE5E5441AAA652BF0EE484F01A5B95752B30024B9B58651941391C7E13D0961E0EF883505A0AB3F052A98CA6C4F2A42BF5E535D6837EB9BE92CA2F03A5BB4A0AB0DEEB2269F4401981BE5BB6A16F1A8608A45D3711C6F86BB39A2FEA26890A984583F067336DF805A629FBE9FA6720EA8EB2C4DC0C0559D78D2EE4E8C4E78B831671E46B8F72480274693F5123D2F83AE8C90A70F9A847C878088105
tmp_aes_key = 9F80404847B20E9F8D5357E4FE4CCDF4D9D670F8D21B57ED4AA667DC16391151
tmp_aes_iv = 4826EC48442743B263E4F6F7A8C874D2B11E4D67634DA5F05B5963FEADEB4D91</code></pre>
<pre><code>encrypted_answer = BF52F4439E2C38417E097981793EF5551F7A74FE89B49633E89A967FECF0F0845629811B5CE6BDEDC2D4DE16FD4115DB98D5B2B83C639F1E384A65BFEB9D1103E8CEC7924E8B21C584202294D1C87D8D40EE495489A22EE97E622CD116D893064FD7F21C41B27E3BDD1DAC60537AD1164E8695C664A1D329D1E820679A05049FCDA06A455DAB2F3FB6A299F0939626B011FED08864BA5D0D3CE923547DB86882AB23C91A0BBE6822F11F49237513EBADC62FD392CB14DA494A89D273DE279C494BCA8FD9A7F9D4A2D060620D5282BE1CCA0728CDA074A4E340D9A8381529E7F21C0CDAB9F2D898080EB9341FAA7886FA3C20A58209C9A78D8EEED0972C663356538D7707F8CF3C3D206C62B3833C8820A3B034EDFDA17F69474B55FC74D57B194B0800C2E8993692013113AA0FA01A0085D6BADBD6A2CC9168ABC2CAEFAFBA54CD0185795F959796727C665747DA9BF1D55B845B42B7447787CC46BEAEEA35AD9809A0D19020FC57FC04C9DBD63C1BE79357F948052C233E1DCF3BBFA6565722B7F8CD812C798DC0A4D91581B7362659814937304E4A44762F541F8A89A3B24761BAFA9B2DD33EEECC6474A9D45B67E6173A26084FFA56BD6EC1A2C54CDECA30DA7A50DC6F8E57EDAC69C1AF82DE6D7A0B952C7AEF637F56530BB785378503D1CD30A152363163D3D1CF0203D1921A73A03A2054E028E52DF9E39B6A006E2870A9898A453C825A0354FCEC475ADF1C5D7BF47D2AA0D80C7263F83886AE7348E9F92D4B4B80B3477381302A4E473A9096E24027FB781BF8C2E75AA2735F868AC2722B0087E8D65DC60FAEBEEA0621C9B6
tmp_aes_key = E8092F50472E2A1319D51CC38AA608D9B6B393B16324279C655CF0D748F3AFED
tmp_aes_iv = 13583ECF6FD8C0ECDB6CB710EC1A784C2128CD3A3053E83970188F81FABF0C9E</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 20FE7C212E6557A75EF65010B94C3E5CFBF115CCBA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FD03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010062AA2F3D99A2D62E6036E2D5E67CB62D56254D74281F80EFD33BD9B29104649A14BFE483A7BA2958AF765B0F9284994C0B39AFE1D5B33637F627629E2DCE51D1797A17E4D7A8B9C2E113FCD808EA745D1D6033399CDCC74D150CF57F4CFC846041249425B8F12FCF1FF6B6FD8A438221D96D33EA97EAE8D9011DF9B3BBA34CF2A095CF28C564D46C25F1C5A1AC46032F20A5B0C1366E93F92DD5B2A33D69F7106D7B0E7E933167A25F86706A3B483041886912D705A08F6F026B7A8B51980E204D02707AD1A4CB181061FC4B9E70CB33E28FFE5BDD4DDC2A3B7886AE702CDC54DFA8918B34E1E3813F48C30DEAF8B79AB78111EF66FB3139E196BDB43CA8D6F76DAC7C653E866F144BF2F8B8
answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FD03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010062AA2F3D99A2D62E6036E2D5E67CB62D56254D74281F80EFD33BD9B29104649A14BFE483A7BA2958AF765B0F9284994C0B39AFE1D5B33637F627629E2DCE51D1797A17E4D7A8B9C2E113FCD808EA745D1D6033399CDCC74D150CF57F4CFC846041249425B8F12FCF1FF6B6FD8A438221D96D33EA97EAE8D9011DF9B3BBA34CF2A095CF28C564D46C25F1C5A1AC46032F20A5B0C1366E93F92DD5B2A33D69F7106D7B0E7E933167A25F86706A3B483041886912D705A08F6F026B7A8B51980E204D02707AD1A4CB181061FC4B9E70CB33E28FFE5BDD4DDC2A3B7886AE702CDC54DFA8918B34E1E3813F48C30DEAF8B79AB78111EF66FB3139E196BDB43CA8D6F76DAC7C653E866F144BF2F8B8</code></pre>
<pre><code>answer_with_hash = 11D98D59D83CA9ACD8258150802B26146FF8C1BEBA0D89B528DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FB03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A714391CD4CEED681586FACA07436667360159993698BEB0EE171C26A5A2F0BCDF97750907EFA4870A743480F9F697D63B97FA0AD5FA697C7603B3089F7E083403B4D2DA05D2960B5A0FA2116E7DA9803DB486EA173F15CA3B8705364241581B9FC429DE343412FB9D92F1575EBD4572AAE745EBCDC2EF16316D9EEB2187DA11872C776D901F545702117B8443FA2A9D8CD2DEA39090D68ADFF781CC507E483BC520CA954DE7D064DDE0F86570F0A8F154EBB4D510BC2AAE3168C1EF84E6C55736EB02EFF6A42A45D897B6DD4B9F44B76572D2F6FADE60F54BA356E6AF418FA207D5216FDF84ECB4939A85C1246055FA8174F807B94CA517E2B47A3E542928D72AB07C658F4C71A736CDBC8B
answer = BA0D89B528DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FB03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A714391CD4CEED681586FACA07436667360159993698BEB0EE171C26A5A2F0BCDF97750907EFA4870A743480F9F697D63B97FA0AD5FA697C7603B3089F7E083403B4D2DA05D2960B5A0FA2116E7DA9803DB486EA173F15CA3B8705364241581B9FC429DE343412FB9D92F1575EBD4572AAE745EBCDC2EF16316D9EEB2187DA11872C776D901F545702117B8443FA2A9D8CD2DEA39090D68ADFF781CC507E483BC520CA954DE7D064DDE0F86570F0A8F154EBB4D510BC2AAE3168C1EF84E6C55736EB02EFF6A42A45D897B6DD4B9F44B76572D2F6FADE60F54BA356E6AF418FA207D5216FDF84ECB4939A85C1246055FA8174F807B94CA517E2B47A3E542928D72AB07C658F4C71A736CDBC8B</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 40 D6 59 B1 27 2C F7 5A EE A1 83 3A
0010 | 66 BE D1 DA EB A4 DF 47 84 75 8E BA 7D B4 DA 94
0020 | FF AB 83 FD 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 28 DF 3D CE 6D 19 69 73 E2 B3 98 84
0010 | CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E 15 57 A9 EF
0020 | B6 58 A4 FB 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 = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
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 | 62 AA 2F 3D 99 A2 D6 2E 60 36 E2 D5 E6 7C B6 2D
0140 | 56 25 4D 74 28 1F 80 EF D3 3B D9 B2 91 04 64 9A
0150 | 14 BF E4 83 A7 BA 29 58 AF 76 5B 0F 92 84 99 4C
0160 | 0B 39 AF E1 D5 B3 36 37 F6 27 62 9E 2D CE 51 D1
0170 | 79 7A 17 E4 D7 A8 B9 C2 E1 13 FC D8 08 EA 74 5D
0180 | 1D 60 33 39 9C DC C7 4D 15 0C F5 7F 4C FC 84 60
0190 | 41 24 94 25 B8 F1 2F CF 1F F6 B6 FD 8A 43 82 21
01A0 | D9 6D 33 EA 97 EA E8 D9 01 1D F9 B3 BB A3 4C F2
01B0 | A0 95 CF 28 C5 64 D4 6C 25 F1 C5 A1 AC 46 03 2F
01C0 | 20 A5 B0 C1 36 6E 93 F9 2D D5 B2 A3 3D 69 F7 10
01D0 | 6D 7B 0E 7E 93 31 67 A2 5F 86 70 6A 3B 48 30 41
01E0 | 88 69 12 D7 05 A0 8F 6F 02 6B 7A 8B 51 98 0E 20
01F0 | 4D 02 70 7A D1 A4 CB 18 10 61 FC 4B 9E 70 CB 33
0200 | E2 8F FE 5B DD 4D DC 2A 3B 78 86 AE 70 2C DC 54
0210 | DF A8 91 8B 34 E1 E3 81 3F 48 C3 0D EA F8 B7 9A
0220 | B7 81 11 EF 66 FB 31 39 E1 96 BD B4 3C A8 D6 F7
0230 | 6D AC 7C 65</code></pre>
0130 | A7 14 39 1C D4 CE ED 68 15 86 FA CA 07 43 66 67
0140 | 36 01 59 99 36 98 BE B0 EE 17 1C 26 A5 A2 F0 BC
0150 | DF 97 75 09 07 EF A4 87 0A 74 34 80 F9 F6 97 D6
0160 | 3B 97 FA 0A D5 FA 69 7C 76 03 B3 08 9F 7E 08 34
0170 | 03 B4 D2 DA 05 D2 96 0B 5A 0F A2 11 6E 7D A9 80
0180 | 3D B4 86 EA 17 3F 15 CA 3B 87 05 36 42 41 58 1B
0190 | 9F C4 29 DE 34 34 12 FB 9D 92 F1 57 5E BD 45 72
01A0 | AA E7 45 EB CD C2 EF 16 31 6D 9E EB 21 87 DA 11
01B0 | 87 2C 77 6D 90 1F 54 57 02 11 7B 84 43 FA 2A 9D
01C0 | 8C D2 DE A3 90 90 D6 8A DF F7 81 CC 50 7E 48 3B
01D0 | C5 20 CA 95 4D E7 D0 64 DD E0 F8 65 70 F0 A8 F1
01E0 | 54 EB B4 D5 10 BC 2A AE 31 68 C1 EF 84 E6 C5 57
01F0 | 36 EB 02 EF F6 A4 2A 45 D8 97 B6 DD 4B 9F 44 B7
0200 | 65 72 D2 F6 FA DE 60 F5 4B A3 56 E6 AF 41 8F A2
0210 | 07 D5 21 6F DF 84 EC B4 93 9A 85 C1 24 60 55 FA
0220 | 81 74 F8 07 B9 4C A5 17 E2 B4 7A 3E 54 29 28 D7
0230 | 2A B0 7C 65</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE00010062AA2F3D99A2D62E6036E2D5</code> <code>E67CB62D56254D74281F80EFD33BD9B2</code> <code>9104649A14BFE483A7BA2958AF765B0F</code> <code>9284994C0B39AFE1D5B33637F627629E</code> <code>2DCE51D1797A17E4D7A8B9C2E113FCD8</code> <code>08EA745D1D6033399CDCC74D150CF57F</code> <code>4CFC846041249425B8F12FCF1FF6B6FD</code> <code>8A438221D96D33EA97EAE8D9011DF9B3</code> <code>BBA34CF2A095CF28C564D46C25F1C5A1</code> <code>AC46032F20A5B0C1366E93F92DD5B2A3</code> <code>3D69F7106D7B0E7E933167A25F86706A</code> <code>3B483041886912D705A08F6F026B7A8B</code> <code>51980E204D02707AD1A4CB181061FC4B</code> <code>9E70CB33E28FFE5BDD4DDC2A3B7886AE</code> <code>702CDC54DFA8918B34E1E3813F48C30D</code> <code>EAF8B79AB78111EF66FB3139E196BDB4</code><br> <code>3CA8D6F7</code></td>
<td><code>FE000100A714391CD4CEED681586FACA</code> <code>07436667360159993698BEB0EE171C26</code> <code>A5A2F0BCDF97750907EFA4870A743480</code> <code>F9F697D63B97FA0AD5FA697C7603B308</code> <code>9F7E083403B4D2DA05D2960B5A0FA211</code> <code>6E7DA9803DB486EA173F15CA3B870536</code> <code>4241581B9FC429DE343412FB9D92F157</code> <code>5EBD4572AAE745EBCDC2EF16316D9EEB</code> <code>2187DA11872C776D901F545702117B84</code> <code>43FA2A9D8CD2DEA39090D68ADFF781CC</code> <code>507E483BC520CA954DE7D064DDE0F865</code> <code>70F0A8F154EBB4D510BC2AAE3168C1EF</code> <code>84E6C55736EB02EFF6A42A45D897B6DD</code> <code>4B9F44B76572D2F6FADE60F54BA356E6</code> <code>AF418FA207D5216FDF84ECB4939A85C1</code> <code>246055FA8174F807B94CA517E2B47A3E</code><br> <code>542928D7</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>6DAC7C65</code> (1702669421 in decimal)</td>
<td><code>2AB07C65</code> (1702670378 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
<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 = 010D0C826F5EB17198EF2B07B58506138CBD144D275A81E8D54BDDBE3156BA40BA7D8EC57D2995A34312FFD1C6F3D6FF879101A1B84A9D0E4844192CBC2A6A927763F4C40AE603FB573AD3BB64C3E094DA135F1F6DDC662DBB49E75622E06C848F872648C4260142624EF8F5FB362FC996C2461D4C341383237B6C6FBFABCE529B3EFBC7511FAE912B9D3D0112A293CAA1DE6C7E1C28DDF019578C21A5731ACB8FE4753F3F6421045471E00E33BB82D848214E34C0C0528AF144DBDB62F45DC74D3774595C00058747F1C4D78B2C28938BA47B5EF62AFDD3719CB10A08F5633C0D88F9AEAE9C3B4E74883A11D6F25F052CD1F7269784654FFB3B95DBB8B7E49F</code></pre>
<pre><code>b = EF526EA535D29E7C7025D5E5ECA5A00E530CC52BF0495DC052F2BA2A36D54D8EF0F65C3B312AADF4AAFCAC03C9984E501AFED90606B7CA0BF6D1259565B5AD40DCF328FB60D919C548E382A18BDA1B4A0F76AE959EB5339D66C550B7F7CA3F29A568E127FF3CAB2011242E7D556BD36C485125B15A67BFCBFAEAC908D84E2405AA9D663EB563BA99E81C1815C55F22DE8845826788ED90824792EB7D75777EA7B8185FDEF6E6DD775A8DA1208883D55F81138B1F525B2E865619B10ECF323D7F5337667DC094D22768795632611E415119FD86F6C9528621010E5D12F80FE63D416A570A4D2D4CEC6A572A5D2F368196541919592F54332BF6DC7DD312215C46</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 = 1C4CD5DFF6CCC5B2FB8E7535A8374D7C1028788BA8E0E14E20EA1EC24967675B4DC9B63FCD82EA35E6195B2B33CFC213DB4AE06412884CA1AE1619252109C121024FCD42A9BE2B23B3AA45AD1F1CCC7516AC449025954F1140B2D6123AADB21DA3C07773AE304036B6497D78693E599277F4D6FBBC5092E5F53C4185351EA8F26E9D9F08F125177A17F1E75F1AE88C0F64BE7325A69736E1F32F1523861C0A0C30969CAEB3BB0B9FFA2A854D38EC839623C2DD5256CF1DA13BEE06D4AAB305BBD7253F0F00ABE209EED2F9DEBA24F084E5BBD3CDBE07A95B87EE88B800C5150E5D0293046DD068E5896F6ACE8DB7919C741ECBA15C508FA902192C7D9A53B401</code></pre>
<pre><code>g_b = 4001C671D59B971B540A94DA7C95FF0F5B05D47CFA6B8D3C07856A5FBA5289021773DF5C30F98B3A2D2059663D52E3B87F9AB60C4C67C9A4A054CDED2C41494C0117AC8BB6B3E6C90A8C6221B92ACF2E3318E2C405F27EBE6910C7A0B5AE0D835C031F91F62287945A12BB4EECAB8C0FD668E1C391414A0F0F4D3B52CA5F8ED93A35F1F454B6EF7D0494EBBB49EC02EDC7FB7FBCE7E84D3B78F918C48AB1DA4C80D60F38738F6BA46A264511DCB1C821C801BB95ADFA09A06A74B0899070BBDB1A0A74A535612E54BD80FC4C6FD1756F8B73554F84337ACB50EEBA6C0CB9E06CC917F95D2803566E3F15F2AA917EC7281B5D910E6B9923A92BA6E0BA29D106DE</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 40 D6 59 B1 27 2C F7 5A EE A1 83 3A
0010 | 66 BE D1 DA EB A4 DF 47 84 75 8E BA 7D B4 DA 94
0020 | FF AB 83 FD 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 1C 4C D5 DF F6 CC C5 B2 FB 8E 75 35 A8 37 4D 7C
0040 | 10 28 78 8B A8 E0 E1 4E 20 EA 1E C2 49 67 67 5B
0050 | 4D C9 B6 3F CD 82 EA 35 E6 19 5B 2B 33 CF C2 13
0060 | DB 4A E0 64 12 88 4C A1 AE 16 19 25 21 09 C1 21
0070 | 02 4F CD 42 A9 BE 2B 23 B3 AA 45 AD 1F 1C CC 75
0080 | 16 AC 44 90 25 95 4F 11 40 B2 D6 12 3A AD B2 1D
0090 | A3 C0 77 73 AE 30 40 36 B6 49 7D 78 69 3E 59 92
00A0 | 77 F4 D6 FB BC 50 92 E5 F5 3C 41 85 35 1E A8 F2
00B0 | 6E 9D 9F 08 F1 25 17 7A 17 F1 E7 5F 1A E8 8C 0F
00C0 | 64 BE 73 25 A6 97 36 E1 F3 2F 15 23 86 1C 0A 0C
00D0 | 30 96 9C AE B3 BB 0B 9F FA 2A 85 4D 38 EC 83 96
00E0 | 23 C2 DD 52 56 CF 1D A1 3B EE 06 D4 AA B3 05 BB
00F0 | D7 25 3F 0F 00 AB E2 09 EE D2 F9 DE BA 24 F0 84
0100 | E5 BB D3 CD BE 07 A9 5B 87 EE 88 B8 00 C5 15 0E
0110 | 5D 02 93 04 6D D0 68 E5 89 6F 6A CE 8D B7 91 9C
0120 | 74 1E CB A1 5C 50 8F A9 02 19 2C 7D 9A 53 B4 01</code></pre>
<pre><code>0000 | 54 B6 43 66 28 DF 3D CE 6D 19 69 73 E2 B3 98 84
0010 | CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E 15 57 A9 EF
0020 | B6 58 A4 FB 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 40 01 C6 71 D5 9B 97 1B 54 0A 94 DA 7C 95 FF 0F
0040 | 5B 05 D4 7C FA 6B 8D 3C 07 85 6A 5F BA 52 89 02
0050 | 17 73 DF 5C 30 F9 8B 3A 2D 20 59 66 3D 52 E3 B8
0060 | 7F 9A B6 0C 4C 67 C9 A4 A0 54 CD ED 2C 41 49 4C
0070 | 01 17 AC 8B B6 B3 E6 C9 0A 8C 62 21 B9 2A CF 2E
0080 | 33 18 E2 C4 05 F2 7E BE 69 10 C7 A0 B5 AE 0D 83
0090 | 5C 03 1F 91 F6 22 87 94 5A 12 BB 4E EC AB 8C 0F
00A0 | D6 68 E1 C3 91 41 4A 0F 0F 4D 3B 52 CA 5F 8E D9
00B0 | 3A 35 F1 F4 54 B6 EF 7D 04 94 EB BB 49 EC 02 ED
00C0 | C7 FB 7F BC E7 E8 4D 3B 78 F9 18 C4 8A B1 DA 4C
00D0 | 80 D6 0F 38 73 8F 6B A4 6A 26 45 11 DC B1 C8 21
00E0 | C8 01 BB 95 AD FA 09 A0 6A 74 B0 89 90 70 BB DB
00F0 | 1A 0A 74 A5 35 61 2E 54 BD 80 FC 4C 6F D1 75 6F
0100 | 8B 73 55 4F 84 33 7A CB 50 EE BA 6C 0C B9 E0 6C
0110 | C9 17 F9 5D 28 03 56 6E 3F 15 F2 AA 91 7E C7 28
0120 | 1B 5D 91 0E 6B 99 23 A9 2B A6 E0 BA 29 D1 06 DE</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 = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001001C4CD5DFF6CCC5B2FB8E7535</code> <code>A8374D7C1028788BA8E0E14E20EA1EC2</code> <code>4967675B4DC9B63FCD82EA35E6195B2B</code> <code>33CFC213DB4AE06412884CA1AE161925</code> <code>2109C121024FCD42A9BE2B23B3AA45AD</code> <code>1F1CCC7516AC449025954F1140B2D612</code> <code>3AADB21DA3C07773AE304036B6497D78</code> <code>693E599277F4D6FBBC5092E5F53C4185</code> <code>351EA8F26E9D9F08F125177A17F1E75F</code> <code>1AE88C0F64BE7325A69736E1F32F1523</code> <code>861C0A0C30969CAEB3BB0B9FFA2A854D</code> <code>38EC839623C2DD5256CF1DA13BEE06D4</code> <code>AAB305BBD7253F0F00ABE209EED2F9DE</code> <code>BA24F084E5BBD3CDBE07A95B87EE88B8</code> <code>00C5150E5D0293046DD068E5896F6ACE</code> <code>8DB7919C741ECBA15C508FA902192C7D</code><br> <code>9A53B401</code></td>
<td><code>FE0001004001C671D59B971B540A94DA</code> <code>7C95FF0F5B05D47CFA6B8D3C07856A5F</code> <code>BA5289021773DF5C30F98B3A2D205966</code> <code>3D52E3B87F9AB60C4C67C9A4A054CDED</code> <code>2C41494C0117AC8BB6B3E6C90A8C6221</code> <code>B92ACF2E3318E2C405F27EBE6910C7A0</code> <code>B5AE0D835C031F91F62287945A12BB4E</code> <code>ECAB8C0FD668E1C391414A0F0F4D3B52</code> <code>CA5F8ED93A35F1F454B6EF7D0494EBBB</code> <code>49EC02EDC7FB7FBCE7E84D3B78F918C4</code> <code>8AB1DA4C80D60F38738F6BA46A264511</code> <code>DCB1C821C801BB95ADFA09A06A74B089</code> <code>9070BBDB1A0A74A535612E54BD80FC4C</code> <code>6FD1756F8B73554F84337ACB50EEBA6C</code> <code>0CB9E06CC917F95D2803566E3F15F2AA</code> <code>917EC7281B5D910E6B9923A92BA6E0BA</code><br> <code>29D106DE</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 = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
<!-- 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 = 54B6436640D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FD0000000000000000FE0001001C4CD5DFF6CCC5B2FB8E7535A8374D7C1028788BA8E0E14E20EA1EC24967675B4DC9B63FCD82EA35E6195B2B33CFC213DB4AE06412884CA1AE1619252109C121024FCD42A9BE2B23B3AA45AD1F1CCC7516AC449025954F1140B2D6123AADB21DA3C07773AE304036B6497D78693E599277F4D6FBBC5092E5F53C4185351EA8F26E9D9F08F125177A17F1E75F1AE88C0F64BE7325A69736E1F32F1523861C0A0C30969CAEB3BB0B9FFA2A854D38EC839623C2DD5256CF1DA13BEE06D4AAB305BBD7253F0F00ABE209EED2F9DEBA24F084E5BBD3CDBE07A95B87EE88B800C5150E5D0293046DD068E5896F6ACE8DB7919C741ECBA15C508FA902192C7D9A53B401
padding = E13CA42691F8DB3231782F87
tmp_aes_key = 9F80404847B20E9F8D5357E4FE4CCDF4D9D670F8D21B57ED4AA667DC16391151
tmp_aes_iv = 4826EC48442743B263E4F6F7A8C874D2B11E4D67634DA5F05B5963FEADEB4D91</code></pre>
<pre><code>data = 54B6436628DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FB0000000000000000FE0001004001C671D59B971B540A94DA7C95FF0F5B05D47CFA6B8D3C07856A5FBA5289021773DF5C30F98B3A2D2059663D52E3B87F9AB60C4C67C9A4A054CDED2C41494C0117AC8BB6B3E6C90A8C6221B92ACF2E3318E2C405F27EBE6910C7A0B5AE0D835C031F91F62287945A12BB4EECAB8C0FD668E1C391414A0F0F4D3B52CA5F8ED93A35F1F454B6EF7D0494EBBB49EC02EDC7FB7FBCE7E84D3B78F918C48AB1DA4C80D60F38738F6BA46A264511DCB1C821C801BB95ADFA09A06A74B0899070BBDB1A0A74A535612E54BD80FC4C6FD1756F8B73554F84337ACB50EEBA6C0CB9E06CC917F95D2803566E3F15F2AA917EC7281B5D910E6B9923A92BA6E0BA29D106DE
padding = 31B9FA59CAF3AEADE31E1940
tmp_aes_key = E8092F50472E2A1319D51CC38AA608D9B6B393B16324279C655CF0D748F3AFED
tmp_aes_iv = 13583ECF6FD8C0ECDB6CB710EC1A784C2128CD3A3053E83970188F81FABF0C9E</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 = 9650445AD6C9B22DA795AEA28948BD7D2FEDC2AB174CA134361803ABFF40DC52E8322703D55A0A01556511D329AAB8DA1017EFAF1746CB6BA8E48FADBBA12EA797D9BF4532C368908D05E7F57B0108BFACE7922CB7C05897EB3B2D0E45F89E9C7425B0E9B35A52FE7D0D89CC412C8DA2D4C84512C306909D61FE6179D38C3CE5F163068F08FDE60201FEFF083E6B075EE8F8CB63CB9E48D1AD814BB14D211C3A993E8959684B19C6AB2CF4494E68FB7217BC9F62DC6C432995D34CC63BC04EB8C17E4FB9BCC34F401FD737384AB0AEA73CE407667D266BB8683A70BBD3EDBD3BBC4CC7049BDD731A422D98E5010F9D389E365D38287EB406154DA781621C7D61FCFFA007371D1FB866EC3E6933B4C8284EE8C0F29CF27778B0AB574F42921F8622E22E730F0900A05BCC29C0D05B6C7AE901323FF88E7BCCE4AA1805C1F2559FF52B46D3D814C52E2E9E5BCE339F91BA</code></pre>
<pre><code>encrypted_data = 30442A11EB1AEE5ECF2FE90B70C89D67CE2FD0C7C7F98A31DF48A9BEB123C94D6FA71DA72A35D0F65EA28EEEED3D23DEDDC90F15D105A8E0614C01AB7880D382C0BFDC39ABCC498DCA8532319DF92FFE294102FDFC791048C001863C1F8E211575495BE7BA7CF0CD6E322E4F9BDC2C5903588800C9E99F76881A096E9DEF7402E096B9972DF747625C1BFBCD95DE384644C43674FD8CC0779A91FC90F56B59EA5D661941E48A07C70D49C8E10F5BF64A7B5920CC17292C28AC3494AC40215781AE30C95978767D4C82873ADEEDD8C35E0A1AFD5158041B2E6531F5BA1AB19B6DBAFCF6AC15AA482BCB63506D78A6A045B894C58468C4F878393FD414CEF3952D3D416255F619D69C8E10F6350050BF32B7E0BA0ADD5343DB8531176E155115EF5CBF1CD996AA8207E3BFA5A72547214A2FBEE5E3FA89FE9D3821B2398FB86807575328280575109AFC44DAFCFA67CD77</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 9C 8D 0E 00 6D AC 7C 65
0010 | 78 01 00 00 1F 5F 04 F5 40 D6 59 B1 27 2C F7 5A
0020 | EE A1 83 3A 66 BE D1 DA EB A4 DF 47 84 75 8E BA
0030 | 7D B4 DA 94 FF AB 83 FD FE 50 01 00 96 50 44 5A
0040 | D6 C9 B2 2D A7 95 AE A2 89 48 BD 7D 2F ED C2 AB
0050 | 17 4C A1 34 36 18 03 AB FF 40 DC 52 E8 32 27 03
0060 | D5 5A 0A 01 55 65 11 D3 29 AA B8 DA 10 17 EF AF
0070 | 17 46 CB 6B A8 E4 8F AD BB A1 2E A7 97 D9 BF 45
0080 | 32 C3 68 90 8D 05 E7 F5 7B 01 08 BF AC E7 92 2C
0090 | B7 C0 58 97 EB 3B 2D 0E 45 F8 9E 9C 74 25 B0 E9
00A0 | B3 5A 52 FE 7D 0D 89 CC 41 2C 8D A2 D4 C8 45 12
00B0 | C3 06 90 9D 61 FE 61 79 D3 8C 3C E5 F1 63 06 8F
00C0 | 08 FD E6 02 01 FE FF 08 3E 6B 07 5E E8 F8 CB 63
00D0 | CB 9E 48 D1 AD 81 4B B1 4D 21 1C 3A 99 3E 89 59
00E0 | 68 4B 19 C6 AB 2C F4 49 4E 68 FB 72 17 BC 9F 62
00F0 | DC 6C 43 29 95 D3 4C C6 3B C0 4E B8 C1 7E 4F B9
0100 | BC C3 4F 40 1F D7 37 38 4A B0 AE A7 3C E4 07 66
0110 | 7D 26 6B B8 68 3A 70 BB D3 ED BD 3B BC 4C C7 04
0120 | 9B DD 73 1A 42 2D 98 E5 01 0F 9D 38 9E 36 5D 38
0130 | 28 7E B4 06 15 4D A7 81 62 1C 7D 61 FC FF A0 07
0140 | 37 1D 1F B8 66 EC 3E 69 33 B4 C8 28 4E E8 C0 F2
0150 | 9C F2 77 78 B0 AB 57 4F 42 92 1F 86 22 E2 2E 73
0160 | 0F 09 00 A0 5B CC 29 C0 D0 5B 6C 7A E9 01 32 3F
0170 | F8 8E 7B CC E4 AA 18 05 C1 F2 55 9F F5 2B 46 D3
0180 | D8 14 C5 2E 2E 9E 5B CE 33 9F 91 BA</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 58 43 09 00 2B B0 7C 65
0010 | 78 01 00 00 1F 5F 04 F5 28 DF 3D CE 6D 19 69 73
0020 | E2 B3 98 84 CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E
0030 | 15 57 A9 EF B6 58 A4 FB FE 50 01 00 30 44 2A 11
0040 | EB 1A EE 5E CF 2F E9 0B 70 C8 9D 67 CE 2F D0 C7
0050 | C7 F9 8A 31 DF 48 A9 BE B1 23 C9 4D 6F A7 1D A7
0060 | 2A 35 D0 F6 5E A2 8E EE ED 3D 23 DE DD C9 0F 15
0070 | D1 05 A8 E0 61 4C 01 AB 78 80 D3 82 C0 BF DC 39
0080 | AB CC 49 8D CA 85 32 31 9D F9 2F FE 29 41 02 FD
0090 | FC 79 10 48 C0 01 86 3C 1F 8E 21 15 75 49 5B E7
00A0 | BA 7C F0 CD 6E 32 2E 4F 9B DC 2C 59 03 58 88 00
00B0 | C9 E9 9F 76 88 1A 09 6E 9D EF 74 02 E0 96 B9 97
00C0 | 2D F7 47 62 5C 1B FB CD 95 DE 38 46 44 C4 36 74
00D0 | FD 8C C0 77 9A 91 FC 90 F5 6B 59 EA 5D 66 19 41
00E0 | E4 8A 07 C7 0D 49 C8 E1 0F 5B F6 4A 7B 59 20 CC
00F0 | 17 29 2C 28 AC 34 94 AC 40 21 57 81 AE 30 C9 59
0100 | 78 76 7D 4C 82 87 3A DE ED D8 C3 5E 0A 1A FD 51
0110 | 58 04 1B 2E 65 31 F5 BA 1A B1 9B 6D BA FC F6 AC
0120 | 15 AA 48 2B CB 63 50 6D 78 A6 A0 45 B8 94 C5 84
0130 | 68 C4 F8 78 39 3F D4 14 CE F3 95 2D 3D 41 62 55
0140 | F6 19 D6 9C 8E 10 F6 35 00 50 BF 32 B7 E0 BA 0A
0150 | DD 53 43 DB 85 31 17 6E 15 51 15 EF 5C BF 1C D9
0160 | 96 AA 82 07 E3 BF A5 A7 25 47 21 4A 2F BE E5 E3
0170 | FA 89 FE 9D 38 21 B2 39 8F B8 68 07 57 53 28 28
0180 | 05 75 10 9A FC 44 DA FC FA 67 CD 77</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>9C8D0E006DAC7C65</code></td>
<td><code>584309002BB07C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 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>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001009650445AD6C9B22DA795AEA2</code> <code>8948BD7D2FEDC2AB174CA134361803AB</code> <code>FF40DC52E8322703D55A0A01556511D3</code> <code>29AAB8DA1017EFAF1746CB6BA8E48FAD</code> <code>BBA12EA797D9BF4532C368908D05E7F5</code> <code>7B0108BFACE7922CB7C05897EB3B2D0E</code> <code>45F89E9C7425B0E9B35A52FE7D0D89CC</code> <code>412C8DA2D4C84512C306909D61FE6179</code> <code>D38C3CE5F163068F08FDE60201FEFF08</code> <code>3E6B075EE8F8CB63CB9E48D1AD814BB1</code> <code>4D211C3A993E8959684B19C6AB2CF449</code> <code>4E68FB7217BC9F62DC6C432995D34CC6</code> <code>3BC04EB8C17E4FB9BCC34F401FD73738</code> <code>4AB0AEA73CE407667D266BB8683A70BB</code> <code>D3EDBD3BBC4CC7049BDD731A422D98E5</code> <code>010F9D389E365D38287EB406154DA781</code> <code>621C7D61FCFFA007371D1FB866EC3E69</code> <code>33B4C8284EE8C0F29CF27778B0AB574F</code> <code>42921F8622E22E730F0900A05BCC29C0</code> <code>D05B6C7AE901323FF88E7BCCE4AA1805</code> <code>C1F2559FF52B46D3D814C52E2E9E5BCE</code><br> <code>339F91BA</code></td>
<td><code>FE50010030442A11EB1AEE5ECF2FE90B</code> <code>70C89D67CE2FD0C7C7F98A31DF48A9BE</code> <code>B123C94D6FA71DA72A35D0F65EA28EEE</code> <code>ED3D23DEDDC90F15D105A8E0614C01AB</code> <code>7880D382C0BFDC39ABCC498DCA853231</code> <code>9DF92FFE294102FDFC791048C001863C</code> <code>1F8E211575495BE7BA7CF0CD6E322E4F</code> <code>9BDC2C5903588800C9E99F76881A096E</code> <code>9DEF7402E096B9972DF747625C1BFBCD</code> <code>95DE384644C43674FD8CC0779A91FC90</code> <code>F56B59EA5D661941E48A07C70D49C8E1</code> <code>0F5BF64A7B5920CC17292C28AC3494AC</code> <code>40215781AE30C95978767D4C82873ADE</code> <code>EDD8C35E0A1AFD5158041B2E6531F5BA</code> <code>1AB19B6DBAFCF6AC15AA482BCB63506D</code> <code>78A6A045B894C58468C4F878393FD414</code> <code>CEF3952D3D416255F619D69C8E10F635</code> <code>0050BF32B7E0BA0ADD5343DB8531176E</code> <code>155115EF5CBF1CD996AA8207E3BFA5A7</code> <code>2547214A2FBEE5E3FA89FE9D3821B239</code> <code>8FB86807575328280575109AFC44DAFC</code><br> <code>FA67CD77</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 = 704962C6CEE4F017E536B0FCD4E4C0A67BF4281A5192E1729EDA71F69744F28735DD10CCAF8CBF9A8B41B7C6552CE597D2E798CDEEA549151B6732A9993EE6E4594B27F7344F10A655888EF4EB7695A150E5BCAF826EBAE56724252B42425F72B5AF57F88141617247513A7DCED1B4A77CDA6EA70D4E7838391B43814C4A57FE87EB9FC3C11246DC6480A35E51045598AE8C5C3BDBBEF945E2F3E5B23B7D613CF818B6340280B91FDDB182D3DE96BAD1DD1A88A03B801158FCD816488DC9A0C186BBBB6FFDCE4D959556FE82115BB1DCDBD8880666FEE86B4F3FF51254873DA79E3F90CA692EB2784A48413FB663A472542B8A9B7DC3E449CF94B3E1C8163BC9</code></pre>
<pre><code>auth_key = BFEED88FC51E73CC60106C675FA6C6841AED1872021C82F8CDE78D32384D2DF8DDFB3FEA5DDCACC93ADBC31F28AB0CB3DE5AFB5A57F44FC6C0D17B5470C976412D5431BF05BC2F88E0CEC263AD258CA3217BD5A637182E508E327846B2C0408494AE3FAC3F2BD652D1214DB8AABCDF9BC93A3010825F62F10EFBCB97B888E66E13BCE3623F3E8F91D0D174D7ECDB486DCA85B3E2DB2F3514E88BE9D71F63D16EF920A05AC59A1D9E13D73CDE7ADCD55E28E0BE6FA0CF753E36243DFE3E3FB2562C2530F21672482621B5883B27EDD9155F396AEDEF14C19C5C308551895DC73B1FB3F82191C8428C2980D9B40CB74CE0412FF0F35A894DC908115BA7FF75327F</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 8C D5 FB 6D AC 7C 65
0010 | 58 00 00 00 34 F7 CB 3B 40 D6 59 B1 27 2C F7 5A
0020 | EE A1 83 3A 66 BE D1 DA EB A4 DF 47 84 75 8E BA
0030 | 7D B4 DA 94 FF AB 83 FD 0A D7 C8 3B BA 5E 75 ED
0040 | C6 53 7C D2 2A 01 D0 AE</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 00 E1 AD 2B B0 7C 65
0010 | 6C 00 00 00 34 F7 CB 3B 28 DF 3D CE 6D 19 69 73
0020 | E2 B3 98 84 CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E
0030 | 15 57 A9 EF B6 58 A4 FB 21 FA 39 3B 2C 85 C9 8E
0040 | 8A 9F 1D 27 DB 16 4F 72</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>018CD5FB6DAC7C65</code></td>
<td><code>0100E1AD2BB07C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>58000000</code> (88 in decimal)</td>
<td><code>6C000000</code> (108 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>40D659B1272CF75AEEA1833A66BED1DA</code></td>
<td><code>28DF3DCE6D196973E2B39884CA1C706A</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>EBA4DF4784758EBA7DB4DA94FFAB83FD</code></td>
<td><code>B50FD6A5B440E55E1557A9EFB658A4FB</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>0AD7C83BBA5E75EDC6537CD22A01D0AE</code></td>
<td><code>21FA393B2C85C98E8A9F1D27DB164F72</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>

View file

@ -1048,9 +1048,7 @@ var Assets = {
username: username,
auction: true
}, function(result) {
if (result.error) {
return showAlert(result.error);
} else if (result.confirm_message) {
if (result.confirm_message) {
showConfirm(result.confirm_message, function() {
doPutToAuction();
}, result.confirm_button);
@ -1150,9 +1148,7 @@ var Assets = {
username: username,
auction: false
}, function(result) {
if (result.error) {
return showAlert(result.error);
} else if (result.confirm_message) {
if (result.confirm_message) {
showConfirm(result.confirm_message, function() {
doSellUsername();
}, result.confirm_button);