mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-14 04:51:42 +01:00
Update content of files
This commit is contained in:
parent
0d5d3a43a6
commit
8f0a296fec
8 changed files with 217 additions and 218 deletions
|
@ -313,7 +313,7 @@ If the returned <a href="/constructor/webViewResultUrl">webViewResultUrl</a> doe
|
|||
<li>Added <a href="/constructor/starsTransactionPeerPlayMarket">starsTransactionPeerPlayMarket</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction with the Play Store, used when purchasing Telegram Stars through the Play Store.</li>
|
||||
<li>Added <a href="/constructor/starsTransactionPeerPremiumBot">starsTransactionPeerPremiumBot</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction made using <a href="https://t.me/premiumbot">@PremiumBot</a> (i.e. using the <a href="/constructor/inputInvoiceStars">inputInvoiceStars</a> flow described <a href="/api/stars#buying-stars">here »</a>).</li>
|
||||
<li>Added <a href="/constructor/starsTransactionPeerFragment">starsTransactionPeerFragment</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction with <a href="https://fragment.com">Fragment</a>, used when purchasing Telegram Stars through <a href="https://fragment.com">Fragment</a>.</li>
|
||||
<li>Added <a href="/constructor/starsTransactionPeer">starsTransactionPeer</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction with another peer (usually a bot or a channel).</li>
|
||||
<li>Added <a href="/constructor/starsTransactionPeer">starsTransactionPeer</a> - Describes a <a href="/api/stars">Telegram Star</a> transaction with another peer.</li>
|
||||
<li>Added <a href="/constructor/inputStorePaymentStars">inputStorePaymentStars</a> - Used to top up the <a href="/api/stars">Telegram Stars balance</a> using the Play Store/App Store flow (official apps only).</li>
|
||||
<li>Added <a href="/constructor/starsTopupOption">starsTopupOption</a> - <a href="/api/stars">Telegram Stars topup option</a>.</li>
|
||||
<li>Added <a href="/constructor/inputInvoiceStars">inputInvoiceStars</a> - Used to top up the current account's <a href="/api/stars">Telegram Stars</a> balance.</li>
|
||||
|
|
|
@ -70,12 +70,8 @@ To send albums, do <strong>not</strong> use <a href="/method/messages.sendMultiM
|
|||
|
||||
<a href='/constructor/inputInvoiceMessage'>inputInvoiceMessage</a>#c5b56859 peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/InputInvoice'>InputInvoice</a>;
|
||||
|
||||
<a href='/constructor/inputMediaInvoice'>inputMediaInvoice</a>#405fef0d flags:<a href='/type/%23'>#</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/InputWebDocument'>InputWebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> payload:<a href='/type/bytes'>bytes</a> provider:flags.3?<a href='/type/string'>string</a> provider_data:<a href='/type/DataJSON'>DataJSON</a> start_param:flags.1?<a href='/type/string'>string</a> extended_media:flags.2?<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/InputMedia'>InputMedia</a>;
|
||||
|
||||
<a href='/constructor/updateMessageExtendedMedia'>updateMessageExtendedMedia</a>#d5a41724 peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> extended_media:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageExtendedMedia'>MessageExtendedMedia</a>> = <a href='/type/Update'>Update</a>;
|
||||
|
||||
<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#f6a548d3 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> extended_media:flags.4?<a href='/type/MessageExtendedMedia'>MessageExtendedMedia</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
|
||||
|
||||
<a href='/constructor/starsTransaction'>starsTransaction</a>#2db5418f flags:<a href='/type/%23'>#</a> refund:flags.3?<a href='/constructor/true'>true</a> pending:flags.4?<a href='/constructor/true'>true</a> failed:flags.6?<a href='/constructor/true'>true</a> gift:flags.10?<a href='/constructor/true'>true</a> id:<a href='/type/string'>string</a> stars:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> peer:<a href='/type/StarsTransactionPeer'>StarsTransactionPeer</a> title:flags.0?<a href='/type/string'>string</a> description:flags.1?<a href='/type/string'>string</a> photo:flags.2?<a href='/type/WebDocument'>WebDocument</a> transaction_date:flags.5?<a href='/type/int'>int</a> transaction_url:flags.5?<a href='/type/string'>string</a> bot_payload:flags.7?<a href='/type/bytes'>bytes</a> msg_id:flags.8?<a href='/type/int'>int</a> extended_media:flags.9?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageMedia'>MessageMedia</a>> = <a href='/type/StarsTransaction'>StarsTransaction</a>;
|
||||
|
||||
---functions---
|
||||
|
@ -90,7 +86,10 @@ To send albums, do <strong>not</strong> use <a href="/method/messages.sendMultiM
|
|||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>To purchase paid media, follow the <a href="/api/payments#22-getting-invoice-info-about-the-product">usual payment flow »</a>, passing an <a href="/constructor/inputInvoiceMessage">inputInvoiceMessage</a> with the peer and message ID of the paid media.</p></div>
|
||||
<p>To purchase paid media, follow the <a href="/api/payments#22-getting-invoice-info-about-the-product">usual payment flow »</a>, passing an <a href="/constructor/inputInvoiceMessage">inputInvoiceMessage</a> with the peer and message ID of the paid media. </p>
|
||||
<p>Once the payment succeds, an <a href="/constructor/updateMessageExtendedMedia">updateMessageExtendedMedia</a> will be emitted, replacing the <a href="/constructor/messageExtendedMediaPreview">messageExtendedMediaPreview</a> constructors associated with the message with <a href="/constructor/messageExtendedMedia">messageExtendedMedia</a> constructors.<br>
|
||||
No other updates will be emitted (i.e. <strong>no</strong> <a href="/constructor/updateEditChannelMessage">updateEditChannelMessage</a> updates will be emitted for the message containing the paid media, even if re-fetching the same messages through other means like <a href="/method/messages.getHistory">messages.getHistory</a> <em>will</em> return the revelealed <a href="/constructor/messageExtendedMedia">messageExtendedMedia</a> constructors).</p>
|
||||
<p>The associated <a href="/constructor/starsTransaction">starsTransaction</a> that will be generated will be of type <a href="/constructor/starsTransactionPeer">starsTransactionPeer</a> (with <code>peer</code> equal to the channel), <code>msg_id</code> equal to the message ID of the paid media and <code>extended_media</code> set to the revealed paid media.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<a href='/method/payments.getStarsTransactions'>payments.getStarsTransactions</a>#97938d5a flags:<a href='/type/%23'>#</a> inbound:flags.0?<a href='/constructor/true'>true</a> outbound:flags.1?<a href='/constructor/true'>true</a> ascending:flags.2?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> offset:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/payments.StarsStatus'>payments.StarsStatus</a>;
|
||||
|
||||
<a href='/method/payments.getStarsTransactionsByID'>payments.getStarsTransactionsByID</a>#27842d2e peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputStarsTransaction'>InputStarsTransaction</a>> = <a href='/type/payments.StarsStatus'>payments.StarsStatus</a>;</code></pre>
|
||||
<p>Use <a href="/method/payments.getStarsStatus">payments.getStarsStatus</a> to get the current stars balance of the current account (with peer=<a href="/constructor/inputPeerSelf">inputPeerSelf</a>), or the stars balance of the bot specified in <code>peer</code>.<br>
|
||||
<p>Use <a href="/method/payments.getStarsStatus">payments.getStarsStatus</a> to get the current stars balance of the current account (with peer=<a href="/constructor/inputPeerSelf">inputPeerSelf</a>), or the stars balance of the bot or channel specified in <code>peer</code>.<br>
|
||||
The method will also return the last 5 <a href="/constructor/starsTransaction">star transactions »</a>.<br>
|
||||
To return all <a href="/constructor/starsTransaction">star transactions »</a> (and optionally search using filters), use <a href="/method/payments.getStarsTransactions">payments.getStarsTransactions</a>, paginating through the transactions passing the returned <code>next_offset</code> (if set) to <code>offset</code> <a href="/api/offsets">as usual</a>. </p>
|
||||
<p><a href="/method/payments.getStarsTransactionsByID">payments.getStarsTransactionsByID</a> may be used to fetch info about specific Telegram Star transactions (or refunds) using their IDs, passed as <a href="/constructor/inputStarsTransaction">inputStarsTransaction</a> constructors. </p>
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
<tr>
|
||||
<td><strong>extended_media</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/InputMedia">InputMedia</a></td>
|
||||
<td>Extended media</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
<tr>
|
||||
<td><strong>extended_media</strong></td>
|
||||
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/MessageExtendedMedia">MessageExtendedMedia</a></td>
|
||||
<td>Extended media</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>starsTransactionPeer</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Describes a Telegram Star transaction with another peer (usually a bot or a channel).">
|
||||
<meta property="description" content="Describes a Telegram Star transaction with another peer.">
|
||||
<meta property="og:title" content="starsTransactionPeer">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Describes a Telegram Star transaction with another peer (usually a bot or a channel).">
|
||||
<meta property="og:description" content="Describes a Telegram Star transaction with another peer.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -42,7 +42,7 @@
|
|||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/starsTransactionPeer" >starsTransactionPeer</a></li></ul></div>
|
||||
<h1 id="dev_page_title">starsTransactionPeer</h1>
|
||||
|
||||
<div id="dev_page_content"><p>Describes a <a href="/api/stars">Telegram Star</a> transaction with another peer (usually a bot or a channel).</p>
|
||||
<div id="dev_page_content"><p>Describes a <a href="/api/stars">Telegram Star</a> transaction with another peer.</p>
|
||||
<p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
|
|
|
@ -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 00 EE 08 00 44 50 AE 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE AF 92 71 33 BF B0 31 EB
|
||||
0020 | 62 FE BB E2 C8 9D 60 7C</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 E0 E3 01 00 EB 5C AE 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE BC 56 DD DA 98 00 AC EE
|
||||
0020 | E3 56 92 3D 3B D5 D4 98</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>00EE08004450AE66</code></td>
|
||||
<td><code>E0E30100EB5CAE66</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>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Random number</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -104,11 +104,11 @@
|
|||
<h5><a class="anchor" href="#2-server-sends-response-of-the-form" id="2-server-sends-response-of-the-form" name="2-server-sends-response-of-the-form"><i class="anchor-icon"></i></a>2) Server sends response of the form</h5>
|
||||
<!-- start resPQ -->
|
||||
<p>Received payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 64 32 F3 44 50 AE 66
|
||||
0010 | A0 00 00 00 63 24 16 05 AF 92 71 33 BF B0 31 EB
|
||||
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
|
||||
0030 | A1 06 5D D9 F3 08 DE 8F 08 20 87 1A 67 79 68 6B
|
||||
0040 | FD 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 98 53 DE EB 5C AE 66
|
||||
0010 | 98 00 00 00 63 24 16 05 BC 56 DD DA 98 00 AC EE
|
||||
0020 | E3 56 92 3D 3B D5 D4 98 34 02 67 DD 74 CB D3 B1
|
||||
0030 | 86 5D 93 7E 50 84 4B 4D 08 18 4F FF 40 E2 49 1F
|
||||
0040 | 1D 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>016432F34450AE66</code></td>
|
||||
<td><code>019853DEEB5CAE66</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>A0000000</code> (160 in decimal)</td>
|
||||
<td><code>98000000</code> (152 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>0820871A6779686BFD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2343871162790472701</td>
|
||||
<td><code>08184FFF40E2491F1D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1751899434209845021</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 = 2343871162790472701</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2343871162790472701 = 1278686611 * 1833030191</code></p>
|
||||
<pre><code>p = 1278686611
|
||||
q = 1833030191</code></pre>
|
||||
<pre><code>pq = 1751899434209845021</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1751899434209845021 = 1088711201 * 1609149821</code></p>
|
||||
<pre><code>p = 1088711201
|
||||
q = 1609149821</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 20 87 1A 67 79 68 6B FD 00 00 00
|
||||
0010 | 04 4C 37 35 93 00 00 00 04 6D 41 D2 2F 00 00 00
|
||||
0020 | AF 92 71 33 BF B0 31 EB 62 FE BB E2 C8 9D 60 7C
|
||||
0030 | 63 96 F1 1C B0 17 84 0F A1 06 5D D9 F3 08 DE 8F
|
||||
0040 | AF 07 B0 E4 A8 B3 FD A6 56 42 5F 66 08 91 11 81
|
||||
0050 | 4B 52 49 AF B7 9D 3A 6C D7 94 E3 B5 1F 83 3C 85
|
||||
<pre><code>0000 | 95 5F F5 A9 08 18 4F FF 40 E2 49 1F 1D 00 00 00
|
||||
0010 | 04 40 E4 6A 21 00 00 00 04 5F E9 AD 7D 00 00 00
|
||||
0020 | BC 56 DD DA 98 00 AC EE E3 56 92 3D 3B D5 D4 98
|
||||
0030 | 34 02 67 DD 74 CB D3 B1 86 5D 93 7E 50 84 4B 4D
|
||||
0040 | FE 9D 9D B1 64 20 81 78 72 5E 81 D9 E0 55 91 91
|
||||
0050 | 8F 8F 3D A1 1E B8 5D E6 64 F0 37 5D 4B 26 36 BE
|
||||
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 = 1833030191</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>0820871A6779686BFD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2343871162790472701</td>
|
||||
<td><code>08184FFF40E2491F1D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1751899434209845021</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>044C373593000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1278686611</td>
|
||||
<td><code>0440E46A21000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1088711201</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>046D41D22F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1833030191</td>
|
||||
<td><code>045FE9AD7D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1609149821</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>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>AF07B0E4A8B3FDA656425F6608911181</code> <code>4B5249AFB79D3A6CD794E3B51F833C85</code></td>
|
||||
<td><code>FE9D9DB164208178725E81D9E0559191</code> <code>8F8F3DA11EB85DE664F0375D4B2636BE</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1833030191</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 = 955FF5A90820871A6779686BFD000000044C373593000000046D41D22F000000AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8FAF07B0E4A8B3FDA656425F66089111814B5249AFB79D3A6CD794E3B51F833C8502000000
|
||||
random_padding_bytes = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD90C83C277AD7397B35BE0F3B607B19A7475C232F929BE03830BFD739523E074124CE0C218B1E4AB6DEF9BBF2589BD429D072E218912C6781CF779F696684FD2E</code></pre>
|
||||
<pre><code>data = 955FF5A908184FFF40E2491F1D0000000440E46A21000000045FE9AD7D000000BC56DDDA9800ACEEE356923D3BD5D498340267DD74CBD3B1865D937E50844B4DFE9D9DB164208178725E81D9E05591918F8F3DA11EB85DE664F0375D4B2636BE02000000
|
||||
random_padding_bytes = 62B6355DF25ED7620587E05B96924C6A1568A5DE6C9DB344E02CB77091BEC9D2839723E73F06DAD52B2C8D0420C31827BEF7D7040F817568F6E16BFE0C931409C70C5A5EF3AAD142DCCC46E2E91D303FAA374F47ED9D890AF1F98B45</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 = 7A59D8E5408210928DFA3ABF7D1636575754CFACB3C3E4788EA49DF9519BBBC816F60F7ED4C294C2D72A1E8BC0259EB315DE58F068775890DCC0DA8EE79D900F8677C57EC9BB2FA04FA073BAA502B9356FAD5C8AA70BF66776E11264949853F2887385AA3387E70765C7890DE63704643AC9E4885BC50E160FF298DB7BDA1C64B5F277847BA88F5F0C4DE3E80581C47DAE49A475672D568CCE5819C91D975046816EE81FC72B95079ADCDAF4E09FC6CCF9AC6DA02A230769410F277756AB51659C271A3EB1E00A810AAE6E512DFB0F4B4FF1CAB38DDD1F64D95FC8E5674A357A12AA1BF402F58647EFDC588EC254108E9F7A4E388E98FF8C875A548A2A07E841</code></pre>
|
||||
<pre><code>encrypted_data = 7F81800360F41487F9532BF5E28842D05478A5754553F15B2F05BA994D1A13D5F1D0FFE69731B79E660B227E5CE8EF7339DEC134F1BE9751BFA62B1D369E6742D6FF2D6B47C1E19390829D306C75794ED39DF76768E0C8E322197F55F6331009F2AFEC9ACBE0CC937E98327B51576B3482F2583419E5CDD0BAB9E4262160602883433DA875AC35B92EBF2BD9A28DC16152AF84A1C57F5394025EB20E992476CDD4ACB5632F6D65EEA16BE55FB7D1A5B4359A3D60B9605B2F5F249BB9DE6E83948532775394B92ED12E8786E324AC3196C4941BC122527175A2908DEB6FD880F32E83CBAE21EC1B75979EB5E7BE625DE587C7E5887ACA5E4EECB988204983DC00</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 78 99 0C 00 45 50 AE 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 AF 92 71 33 BF B0 31 EB
|
||||
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
|
||||
0030 | A1 06 5D D9 F3 08 DE 8F 04 4C 37 35 93 00 00 00
|
||||
0040 | 04 6D 41 D2 2F 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 7A 59 D8 E5 40 82 10 92 8D FA 3A BF
|
||||
0060 | 7D 16 36 57 57 54 CF AC B3 C3 E4 78 8E A4 9D F9
|
||||
0070 | 51 9B BB C8 16 F6 0F 7E D4 C2 94 C2 D7 2A 1E 8B
|
||||
0080 | C0 25 9E B3 15 DE 58 F0 68 77 58 90 DC C0 DA 8E
|
||||
0090 | E7 9D 90 0F 86 77 C5 7E C9 BB 2F A0 4F A0 73 BA
|
||||
00A0 | A5 02 B9 35 6F AD 5C 8A A7 0B F6 67 76 E1 12 64
|
||||
00B0 | 94 98 53 F2 88 73 85 AA 33 87 E7 07 65 C7 89 0D
|
||||
00C0 | E6 37 04 64 3A C9 E4 88 5B C5 0E 16 0F F2 98 DB
|
||||
00D0 | 7B DA 1C 64 B5 F2 77 84 7B A8 8F 5F 0C 4D E3 E8
|
||||
00E0 | 05 81 C4 7D AE 49 A4 75 67 2D 56 8C CE 58 19 C9
|
||||
00F0 | 1D 97 50 46 81 6E E8 1F C7 2B 95 07 9A DC DA F4
|
||||
0100 | E0 9F C6 CC F9 AC 6D A0 2A 23 07 69 41 0F 27 77
|
||||
0110 | 56 AB 51 65 9C 27 1A 3E B1 E0 0A 81 0A AE 6E 51
|
||||
0120 | 2D FB 0F 4B 4F F1 CA B3 8D DD 1F 64 D9 5F C8 E5
|
||||
0130 | 67 4A 35 7A 12 AA 1B F4 02 F5 86 47 EF DC 58 8E
|
||||
0140 | C2 54 10 8E 9F 7A 4E 38 8E 98 FF 8C 87 5A 54 8A
|
||||
0150 | 2A 07 E8 41</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 BC CB 0A 00 EC 5C AE 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 BC 56 DD DA 98 00 AC EE
|
||||
0020 | E3 56 92 3D 3B D5 D4 98 34 02 67 DD 74 CB D3 B1
|
||||
0030 | 86 5D 93 7E 50 84 4B 4D 04 40 E4 6A 21 00 00 00
|
||||
0040 | 04 5F E9 AD 7D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 7F 81 80 03 60 F4 14 87 F9 53 2B F5
|
||||
0060 | E2 88 42 D0 54 78 A5 75 45 53 F1 5B 2F 05 BA 99
|
||||
0070 | 4D 1A 13 D5 F1 D0 FF E6 97 31 B7 9E 66 0B 22 7E
|
||||
0080 | 5C E8 EF 73 39 DE C1 34 F1 BE 97 51 BF A6 2B 1D
|
||||
0090 | 36 9E 67 42 D6 FF 2D 6B 47 C1 E1 93 90 82 9D 30
|
||||
00A0 | 6C 75 79 4E D3 9D F7 67 68 E0 C8 E3 22 19 7F 55
|
||||
00B0 | F6 33 10 09 F2 AF EC 9A CB E0 CC 93 7E 98 32 7B
|
||||
00C0 | 51 57 6B 34 82 F2 58 34 19 E5 CD D0 BA B9 E4 26
|
||||
00D0 | 21 60 60 28 83 43 3D A8 75 AC 35 B9 2E BF 2B D9
|
||||
00E0 | A2 8D C1 61 52 AF 84 A1 C5 7F 53 94 02 5E B2 0E
|
||||
00F0 | 99 24 76 CD D4 AC B5 63 2F 6D 65 EE A1 6B E5 5F
|
||||
0100 | B7 D1 A5 B4 35 9A 3D 60 B9 60 5B 2F 5F 24 9B B9
|
||||
0110 | DE 6E 83 94 85 32 77 53 94 B9 2E D1 2E 87 86 E3
|
||||
0120 | 24 AC 31 96 C4 94 1B C1 22 52 71 75 A2 90 8D EB
|
||||
0130 | 6F D8 80 F3 2E 83 CB AE 21 EC 1B 75 97 9E B5 E7
|
||||
0140 | BE 62 5D E5 87 C7 E5 88 7A CA 5E 4E EC B9 88 20
|
||||
0150 | 49 83 DC 00</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 = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD9
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>78990C004550AE66</code></td>
|
||||
<td><code>BCCB0A00EC5CAE66</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 = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD9
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>044C373593000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1278686611</td>
|
||||
<td><code>0440E46A21000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1088711201</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>046D41D22F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1833030191</td>
|
||||
<td><code>045FE9AD7D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1609149821</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 = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD9
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE0001007A59D8E5408210928DFA3ABF</code> <code>7D1636575754CFACB3C3E4788EA49DF9</code> <code>519BBBC816F60F7ED4C294C2D72A1E8B</code> <code>C0259EB315DE58F068775890DCC0DA8E</code> <code>E79D900F8677C57EC9BB2FA04FA073BA</code> <code>A502B9356FAD5C8AA70BF66776E11264</code> <code>949853F2887385AA3387E70765C7890D</code> <code>E63704643AC9E4885BC50E160FF298DB</code> <code>7BDA1C64B5F277847BA88F5F0C4DE3E8</code> <code>0581C47DAE49A475672D568CCE5819C9</code> <code>1D975046816EE81FC72B95079ADCDAF4</code> <code>E09FC6CCF9AC6DA02A230769410F2777</code> <code>56AB51659C271A3EB1E00A810AAE6E51</code> <code>2DFB0F4B4FF1CAB38DDD1F64D95FC8E5</code> <code>674A357A12AA1BF402F58647EFDC588E</code> <code>C254108E9F7A4E388E98FF8C875A548A</code><br> <code>2A07E841</code></td>
|
||||
<td><code>FE0001007F81800360F41487F9532BF5</code> <code>E28842D05478A5754553F15B2F05BA99</code> <code>4D1A13D5F1D0FFE69731B79E660B227E</code> <code>5CE8EF7339DEC134F1BE9751BFA62B1D</code> <code>369E6742D6FF2D6B47C1E19390829D30</code> <code>6C75794ED39DF76768E0C8E322197F55</code> <code>F6331009F2AFEC9ACBE0CC937E98327B</code> <code>51576B3482F2583419E5CDD0BAB9E426</code> <code>2160602883433DA875AC35B92EBF2BD9</code> <code>A28DC16152AF84A1C57F5394025EB20E</code> <code>992476CDD4ACB5632F6D65EEA16BE55F</code> <code>B7D1A5B4359A3D60B9605B2F5F249BB9</code> <code>DE6E83948532775394B92ED12E8786E3</code> <code>24AC3196C4941BC122527175A2908DEB</code> <code>6FD880F32E83CBAE21EC1B75979EB5E7</code> <code>BE625DE587C7E5887ACA5E4EECB98820</code><br> <code>4983DC00</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD9
|
|||
<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 AC 2B C4 45 50 AE 66
|
||||
0010 | B0 02 00 00 5C 07 E8 D0 AF 92 71 33 BF B0 31 EB
|
||||
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
|
||||
0030 | A1 06 5D D9 F3 08 DE 8F FE 50 02 00 19 EC 16 F8
|
||||
0040 | 80 DB 0B 8F 17 7A 38 68 C4 55 9E 6F 5E AA B5 BB
|
||||
0050 | 6B 2A 02 74 45 44 F9 D7 4E DA CE 3C 51 22 2E 6B
|
||||
0060 | 87 90 F1 16 00 49 82 58 B4 F3 40 45 45 E5 E5 81
|
||||
0070 | 6C 29 7C 81 61 3D 22 F0 F4 36 1E 70 0D 57 4D 44
|
||||
0080 | 48 78 04 C1 86 46 33 92 F5 07 32 E9 F3 03 01 A1
|
||||
0090 | F9 37 9C F3 FB 6C 47 03 89 C0 BF 07 94 F1 E7 0B
|
||||
00A0 | AF 34 B4 F2 0C 90 9B 2E 43 99 AF 12 46 A9 F0 C0
|
||||
00B0 | BD DC E9 BF B9 8D A2 37 28 F1 DD DF C4 BC 7A 32
|
||||
00C0 | C1 1F 82 E4 EB C2 21 AB 9E 7B 8A E8 DA 16 65 57
|
||||
00D0 | DF 63 31 68 37 6F E5 7A 96 65 A8 4C 14 33 9B 90
|
||||
00E0 | 7E DE 3C 75 C0 B8 55 98 B2 8B B4 30 DC 58 EF B5
|
||||
00F0 | 06 0B A7 C9 8A F5 0F 42 E6 25 B2 4D F4 AB 65 EF
|
||||
0100 | 7A D8 89 11 0D 91 47 FC 6C 8F 67 D5 BD 4C 74 00
|
||||
0110 | BF 9F 99 4F 9F 77 6D 39 A4 59 99 BE 9F F3 7B 18
|
||||
0120 | B7 52 59 76 C0 C6 0D 5E 1D F8 95 D5 18 09 44 AC
|
||||
0130 | A9 64 8B 2E BA 57 54 44 86 86 DF A7 E6 FB FA 6F
|
||||
0140 | 7B 3F 7B 50 D3 48 68 11 19 D8 99 A4 60 91 CF 5A
|
||||
0150 | E8 6A 00 1D 04 BF 2C CF 61 2E 8D 43 4E C4 2B 96
|
||||
0160 | 20 4B BF B4 42 C3 30 E3 21 7E D9 CE 03 80 E8 EB
|
||||
0170 | 30 F2 63 F0 2F 26 1C 7C E5 AB 4B 0D 1D E1 EC DF
|
||||
0180 | 1A 8B 11 17 32 D7 10 4E EF 8A 7A C6 AF 7E 46 E8
|
||||
0190 | 4B E5 E2 3D FD ED DA BC E8 1E C6 98 B1 A5 76 B9
|
||||
01A0 | 15 79 59 1D CD 37 33 AB AC 42 00 D2 0F AF D6 9A
|
||||
01B0 | D3 50 55 18 63 54 C5 4E 57 60 7C 15 37 39 7F A6
|
||||
01C0 | 11 55 B8 DF 57 FF 9F C2 F3 2E 45 7F 42 42 9B 48
|
||||
01D0 | E5 8C C4 F0 07 BF 63 3A DC DE AE 69 1A 9A 89 E2
|
||||
01E0 | 28 0C D3 E4 0B E0 4A 30 7D 3E 81 3D 07 A6 18 4A
|
||||
01F0 | 7F 7A C6 D1 5E 9C 29 11 00 7D B4 89 78 C3 8B 6A
|
||||
0200 | C7 CD CF E8 6D 7E F4 3A 91 33 07 7E 62 6D 8D 58
|
||||
0210 | 76 87 2C 70 29 B6 3C 99 C2 E5 61 5D 28 4A 8F 0C
|
||||
0220 | F9 7F 81 D2 BC 89 F5 26 4F ED 1C 67 58 A6 6A FA
|
||||
0230 | D8 CB 6E 9A 24 58 FA A9 15 D0 C3 29 5D 6F 5C 43
|
||||
0240 | 2B 2C 25 B2 4F 95 6C 7E 24 8C E5 33 54 2F A2 CA
|
||||
0250 | D4 C8 F3 31 FC 35 B2 FF EE 02 69 2B 34 AD 1F 9F
|
||||
0260 | 59 55 45 B3 7D C0 66 F1 16 F7 55 CA FC F8 2B DC
|
||||
0270 | 2B E4 10 2C 5A 04 2C 1C 78 5B C2 C2 D3 D9 01 19
|
||||
0280 | 0A A7 E9 2A 8A 8A E7 60 86 EF 43 D5</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 00 67 BC EC 5C AE 66
|
||||
0010 | B0 02 00 00 5C 07 E8 D0 BC 56 DD DA 98 00 AC EE
|
||||
0020 | E3 56 92 3D 3B D5 D4 98 34 02 67 DD 74 CB D3 B1
|
||||
0030 | 86 5D 93 7E 50 84 4B 4D FE 50 02 00 4C EE 7B 14
|
||||
0040 | 58 DC 2B 34 66 10 85 59 CA C3 66 BE D3 48 FE 19
|
||||
0050 | B2 87 F2 72 03 C1 1B 2C 7B 92 0D 35 BD 3F B9 5F
|
||||
0060 | 53 CC F6 31 60 1A 6E 32 CD 4A 75 0E 24 F7 BD D6
|
||||
0070 | 40 AD 95 5B 7E 9D D8 87 CA 99 8B 5C 38 9F B6 63
|
||||
0080 | 4C 0C 42 7A 7C 0E 15 2E 60 9A AF E1 AC 0E 18 EC
|
||||
0090 | 41 57 20 85 B8 EA 93 68 9F 26 D4 9C 68 02 D8 BB
|
||||
00A0 | C1 17 86 EF 53 D0 7B 61 35 FE F1 C1 2E 74 D8 42
|
||||
00B0 | D1 B7 EB 7E 72 71 F0 C7 07 D8 8B 69 32 AB A5 9B
|
||||
00C0 | BC 1C BC AF B5 D6 9E 97 26 C0 D3 23 75 17 1A 5A
|
||||
00D0 | 19 4D EE 96 67 82 62 F0 E8 B9 67 C0 4C F1 3C E3
|
||||
00E0 | 84 80 06 E8 EE 89 97 68 2C D6 A3 CF C0 4F C9 56
|
||||
00F0 | A1 13 91 64 BB 66 39 21 F4 D5 04 17 28 92 64 93
|
||||
0100 | B3 E7 BD 73 E4 32 05 AD 60 5F C8 C0 0F B2 1F 2E
|
||||
0110 | 5A 4E F3 81 32 10 22 56 0C C5 A4 83 52 B0 22 14
|
||||
0120 | 58 D2 F8 63 41 C2 8B 9D EA EB 09 1B 84 31 F5 01
|
||||
0130 | 43 EB A0 88 5A C1 6C 86 89 AA B3 CB CB 0E 96 2D
|
||||
0140 | 08 A6 7F B3 8D 26 64 3F 71 74 DB E3 2B C8 BA 84
|
||||
0150 | B1 91 BB 5B A8 A5 35 55 8C 70 7D 1D 53 39 86 60
|
||||
0160 | D1 8D A0 D4 21 C4 4E EE FF 36 3D 22 F2 20 FC E0
|
||||
0170 | 21 88 62 7F 3F A7 B3 99 24 69 4C 2A 7F 49 16 05
|
||||
0180 | 68 FD 8C 7E 88 4B 4B 3F 14 A2 EA 27 77 A5 44 6C
|
||||
0190 | 9B C1 6D A3 CD 94 83 43 CA F5 1D 27 9C 87 F3 AB
|
||||
01A0 | F5 C6 EE 50 B3 46 8D 8B 99 18 0C 73 94 AC CB 33
|
||||
01B0 | C0 23 D9 B4 2A F4 57 AB D8 63 B6 7B 08 60 97 B0
|
||||
01C0 | EE 26 F3 89 C4 33 1C 42 51 74 83 57 54 E5 DE 88
|
||||
01D0 | BE 10 50 4C 5E 4F 86 10 AA 56 63 B0 09 6F CA DC
|
||||
01E0 | 5A 9C 8A 6F 8B A6 2C 89 16 0E DF A5 CC B7 3D 85
|
||||
01F0 | 9C 58 92 AD C7 74 BC C9 1E A7 85 F0 53 C2 5D 5C
|
||||
0200 | 6F E2 7F 17 AE 07 7E C3 57 26 07 D1 EE B8 04 5E
|
||||
0210 | F1 84 A8 06 01 B5 7E D8 96 92 42 5C 5B 02 25 B3
|
||||
0220 | EA E6 4F 08 7B A4 69 27 61 F7 91 5C 54 9D FD 44
|
||||
0230 | 1D 9A E1 5E 1F 15 C9 EE 4B 11 BF 8F 8B 83 B0 BB
|
||||
0240 | EF 32 CB AE 75 CD 91 86 53 30 87 64 A4 61 78 61
|
||||
0250 | 85 61 D7 1E 37 8E C0 64 F9 77 AD 94 17 B8 EC 55
|
||||
0260 | 62 AA 2E 55 ED 01 F4 A1 71 91 58 92 2D BE 32 9E
|
||||
0270 | F4 C0 00 C6 A3 3B EF 0E E0 80 D3 D1 66 08 22 5A
|
||||
0280 | 40 54 54 A4 0C A8 99 D4 C9 0A 8E 1A</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,7 +464,7 @@ random_padding_bytes = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD9
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01AC2BC44550AE66</code></td>
|
||||
<td><code>010067BCEC5CAE66</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>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD9
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE50020019EC16F880DB0B8F177A3868</code> <code>C4559E6F5EAAB5BB6B2A02744544F9D7</code> <code>4EDACE3C51222E6B8790F11600498258</code> <code>B4F3404545E5E5816C297C81613D22F0</code> <code>F4361E700D574D44487804C186463392</code> <code>F50732E9F30301A1F9379CF3FB6C4703</code> <code>89C0BF0794F1E70BAF34B4F20C909B2E</code> <code>4399AF1246A9F0C0BDDCE9BFB98DA237</code> <code>28F1DDDFC4BC7A32C11F82E4EBC221AB</code> <code>9E7B8AE8DA166557DF633168376FE57A</code> <code>9665A84C14339B907EDE3C75C0B85598</code> <code>B28BB430DC58EFB5060BA7C98AF50F42</code> <code>E625B24DF4AB65EF7AD889110D9147FC</code> <code>6C8F67D5BD4C7400BF9F994F9F776D39</code> <code>A45999BE9FF37B18B7525976C0C60D5E</code> <code>1DF895D5180944ACA9648B2EBA575444</code> <code>8686DFA7E6FBFA6F7B3F7B50D3486811</code> <code>19D899A46091CF5AE86A001D04BF2CCF</code> <code>612E8D434EC42B96204BBFB442C330E3</code> <code>217ED9CE0380E8EB30F263F02F261C7C</code> <code>E5AB4B0D1DE1ECDF1A8B111732D7104E</code> <code>EF8A7AC6AF7E46E84BE5E23DFDEDDABC</code> <code>E81EC698B1A576B91579591DCD3733AB</code> <code>AC4200D20FAFD69AD35055186354C54E</code> <code>57607C1537397FA61155B8DF57FF9FC2</code> <code>F32E457F42429B48E58CC4F007BF633A</code> <code>DCDEAE691A9A89E2280CD3E40BE04A30</code> <code>7D3E813D07A6184A7F7AC6D15E9C2911</code> <code>007DB48978C38B6AC7CDCFE86D7EF43A</code> <code>9133077E626D8D5876872C7029B63C99</code> <code>C2E5615D284A8F0CF97F81D2BC89F526</code> <code>4FED1C6758A66AFAD8CB6E9A2458FAA9</code> <code>15D0C3295D6F5C432B2C25B24F956C7E</code> <code>248CE533542FA2CAD4C8F331FC35B2FF</code> <code>EE02692B34AD1F9F595545B37DC066F1</code> <code>16F755CAFCF82BDC2BE4102C5A042C1C</code> <code>785BC2C2D3D901190AA7E92A8A8AE760</code><br> <code>86EF43D5</code></td>
|
||||
<td><code>FE5002004CEE7B1458DC2B3466108559</code> <code>CAC366BED348FE19B287F27203C11B2C</code> <code>7B920D35BD3FB95F53CCF631601A6E32</code> <code>CD4A750E24F7BDD640AD955B7E9DD887</code> <code>CA998B5C389FB6634C0C427A7C0E152E</code> <code>609AAFE1AC0E18EC41572085B8EA9368</code> <code>9F26D49C6802D8BBC11786EF53D07B61</code> <code>35FEF1C12E74D842D1B7EB7E7271F0C7</code> <code>07D88B6932ABA59BBC1CBCAFB5D69E97</code> <code>26C0D32375171A5A194DEE96678262F0</code> <code>E8B967C04CF13CE3848006E8EE899768</code> <code>2CD6A3CFC04FC956A1139164BB663921</code> <code>F4D5041728926493B3E7BD73E43205AD</code> <code>605FC8C00FB21F2E5A4EF38132102256</code> <code>0CC5A48352B0221458D2F86341C28B9D</code> <code>EAEB091B8431F50143EBA0885AC16C86</code> <code>89AAB3CBCB0E962D08A67FB38D26643F</code> <code>7174DBE32BC8BA84B191BB5BA8A53555</code> <code>8C707D1D53398660D18DA0D421C44EEE</code> <code>FF363D22F220FCE02188627F3FA7B399</code> <code>24694C2A7F49160568FD8C7E884B4B3F</code> <code>14A2EA2777A5446C9BC16DA3CD948343</code> <code>CAF51D279C87F3ABF5C6EE50B3468D8B</code> <code>99180C7394ACCB33C023D9B42AF457AB</code> <code>D863B67B086097B0EE26F389C4331C42</code> <code>5174835754E5DE88BE10504C5E4F8610</code> <code>AA5663B0096FCADC5A9C8A6F8BA62C89</code> <code>160EDFA5CCB73D859C5892ADC774BCC9</code> <code>1EA785F053C25D5C6FE27F17AE077EC3</code> <code>572607D1EEB8045EF184A80601B57ED8</code> <code>9692425C5B0225B3EAE64F087BA46927</code> <code>61F7915C549DFD441D9AE15E1F15C9EE</code> <code>4B11BF8F8B83B0BBEF32CBAE75CD9186</code> <code>53308764A46178618561D71E378EC064</code> <code>F977AD9417B8EC5562AA2E55ED01F4A1</code> <code>719158922DBE329EF4C000C6A33BEF0E</code> <code>E080D3D16608225A405454A40CA899D4</code><br> <code>C90A8E1A</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 904ECC9704579CF9BF3BEB9D73BB49817BE0C56F1B51B2DB7FD8E1FD9
|
|||
<!-- 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 = 19EC16F880DB0B8F177A3868C4559E6F5EAAB5BB6B2A02744544F9D74EDACE3C51222E6B8790F11600498258B4F3404545E5E5816C297C81613D22F0F4361E700D574D44487804C186463392F50732E9F30301A1F9379CF3FB6C470389C0BF0794F1E70BAF34B4F20C909B2E4399AF1246A9F0C0BDDCE9BFB98DA23728F1DDDFC4BC7A32C11F82E4EBC221AB9E7B8AE8DA166557DF633168376FE57A9665A84C14339B907EDE3C75C0B85598B28BB430DC58EFB5060BA7C98AF50F42E625B24DF4AB65EF7AD889110D9147FC6C8F67D5BD4C7400BF9F994F9F776D39A45999BE9FF37B18B7525976C0C60D5E1DF895D5180944ACA9648B2EBA5754448686DFA7E6FBFA6F7B3F7B50D348681119D899A46091CF5AE86A001D04BF2CCF612E8D434EC42B96204BBFB442C330E3217ED9CE0380E8EB30F263F02F261C7CE5AB4B0D1DE1ECDF1A8B111732D7104EEF8A7AC6AF7E46E84BE5E23DFDEDDABCE81EC698B1A576B91579591DCD3733ABAC4200D20FAFD69AD35055186354C54E57607C1537397FA61155B8DF57FF9FC2F32E457F42429B48E58CC4F007BF633ADCDEAE691A9A89E2280CD3E40BE04A307D3E813D07A6184A7F7AC6D15E9C2911007DB48978C38B6AC7CDCFE86D7EF43A9133077E626D8D5876872C7029B63C99C2E5615D284A8F0CF97F81D2BC89F5264FED1C6758A66AFAD8CB6E9A2458FAA915D0C3295D6F5C432B2C25B24F956C7E248CE533542FA2CAD4C8F331FC35B2FFEE02692B34AD1F9F595545B37DC066F116F755CAFCF82BDC2BE4102C5A042C1C785BC2C2D3D901190AA7E92A8A8AE76086EF43D5
|
||||
tmp_aes_key = B95F44958D683B3A8A09C088941CCC6A5CD73B89A57E9BE072534FBA65DF05C2
|
||||
tmp_aes_iv = 3AA4C62218DE342CE601730DA19A89BAE878CFB77912FF7AC45C512CAF07B0E4</code></pre>
|
||||
<pre><code>encrypted_answer = 4CEE7B1458DC2B3466108559CAC366BED348FE19B287F27203C11B2C7B920D35BD3FB95F53CCF631601A6E32CD4A750E24F7BDD640AD955B7E9DD887CA998B5C389FB6634C0C427A7C0E152E609AAFE1AC0E18EC41572085B8EA93689F26D49C6802D8BBC11786EF53D07B6135FEF1C12E74D842D1B7EB7E7271F0C707D88B6932ABA59BBC1CBCAFB5D69E9726C0D32375171A5A194DEE96678262F0E8B967C04CF13CE3848006E8EE8997682CD6A3CFC04FC956A1139164BB663921F4D5041728926493B3E7BD73E43205AD605FC8C00FB21F2E5A4EF381321022560CC5A48352B0221458D2F86341C28B9DEAEB091B8431F50143EBA0885AC16C8689AAB3CBCB0E962D08A67FB38D26643F7174DBE32BC8BA84B191BB5BA8A535558C707D1D53398660D18DA0D421C44EEEFF363D22F220FCE02188627F3FA7B39924694C2A7F49160568FD8C7E884B4B3F14A2EA2777A5446C9BC16DA3CD948343CAF51D279C87F3ABF5C6EE50B3468D8B99180C7394ACCB33C023D9B42AF457ABD863B67B086097B0EE26F389C4331C425174835754E5DE88BE10504C5E4F8610AA5663B0096FCADC5A9C8A6F8BA62C89160EDFA5CCB73D859C5892ADC774BCC91EA785F053C25D5C6FE27F17AE077EC3572607D1EEB8045EF184A80601B57ED89692425C5B0225B3EAE64F087BA4692761F7915C549DFD441D9AE15E1F15C9EE4B11BF8F8B83B0BBEF32CBAE75CD918653308764A46178618561D71E378EC064F977AD9417B8EC5562AA2E55ED01F4A1719158922DBE329EF4C000C6A33BEF0EE080D3D16608225A405454A40CA899D4C90A8E1A
|
||||
tmp_aes_key = A1484E0939FC4D1323ADA4C191556735B8946957EE87CD82226F0176D7B27591
|
||||
tmp_aes_iv = E2A113E17B14FEAE1BD1D541DA6BB815F371D9E6D66C7B3AEA8BD5F2FE9D9DB1</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 19F30D25A28063FD4B727509378CEBF50978FBC6BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8F03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004F88F00B50A5BB7C2A5A99BC577C9F998C46963E3591827E8A2C60D4D4D0E475985663FE30D7593FF91121E8AB3FFC5000D1CD57766FD45AA8AA99217D915AA398947080CAF43CCF0BD856B2C0F95D4EF7E48E842B55D710483A155462CC1A40EE1915FA67246D49AA39D56F4736CE16FEE19657DFA49582FDB5871757FA89B6A35AC1126F46BA1915E156EDD78FF80914C01466F34D158A9D2CEA9E3F6A27B8369D10FFACE333D67987507CEA9EC8F9638749E14A09F9F315D20E96C1FC2158C2C16615A8FB18ED7D29F3C17C3FB8CAA09415CBAFA81D34C11761308A9DA00EF90C638A8727E1EB182BE4F0F86C0F575A2B74F78443828C905348F50DF799FE4550AE662C71D3F58C74E5FC
|
||||
answer = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8F03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004F88F00B50A5BB7C2A5A99BC577C9F998C46963E3591827E8A2C60D4D4D0E475985663FE30D7593FF91121E8AB3FFC5000D1CD57766FD45AA8AA99217D915AA398947080CAF43CCF0BD856B2C0F95D4EF7E48E842B55D710483A155462CC1A40EE1915FA67246D49AA39D56F4736CE16FEE19657DFA49582FDB5871757FA89B6A35AC1126F46BA1915E156EDD78FF80914C01466F34D158A9D2CEA9E3F6A27B8369D10FFACE333D67987507CEA9EC8F9638749E14A09F9F315D20E96C1FC2158C2C16615A8FB18ED7D29F3C17C3FB8CAA09415CBAFA81D34C11761308A9DA00EF90C638A8727E1EB182BE4F0F86C0F575A2B74F78443828C905348F50DF799FE4550AE662C71D3F58C74E5FC</code></pre>
|
||||
<pre><code>answer_with_hash = 074264019923A63EC0C88F7E6928C760F334B9D7BA0D89B5BC56DDDA9800ACEEE356923D3BD5D498340267DD74CBD3B1865D937E50844B4D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100C52E1F6A98640987FC3954D183ECBC7AFD932396183A4E1536BD39BC8290F095F84368B4BD1D3A50A9FBF0CAAFB97A034F02A99ADF4EA977996291E1EAF7BC07982406EB1266E92BA0DD5935CD555670430AA5A3A73259ABC1ECBEBB30527C58DB4C73141CF75A90734F1E490E45FCFA4673C1FBA0F766FD018416F805741DF384AD5AE485C3B9A9493A5103B388EAAAF6353D08FD70FB143C0E8328CF8E829A9368641189DC20318D4080850083CA41CC1028EDAA0E6B9A1F3E650C58353347555008F83562E5401A86318BF0C9FCD2B3486CF4D8747FE6204903192C903C9EB31F7E615B1C41C0F5831625744EF1E424EABF06574C789A7F0665549AB84E44EC5CAE6613AB53F334801CC9
|
||||
answer = BA0D89B5BC56DDDA9800ACEEE356923D3BD5D498340267DD74CBD3B1865D937E50844B4D03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100C52E1F6A98640987FC3954D183ECBC7AFD932396183A4E1536BD39BC8290F095F84368B4BD1D3A50A9FBF0CAAFB97A034F02A99ADF4EA977996291E1EAF7BC07982406EB1266E92BA0DD5935CD555670430AA5A3A73259ABC1ECBEBB30527C58DB4C73141CF75A90734F1E490E45FCFA4673C1FBA0F766FD018416F805741DF384AD5AE485C3B9A9493A5103B388EAAAF6353D08FD70FB143C0E8328CF8E829A9368641189DC20318D4080850083CA41CC1028EDAA0E6B9A1F3E650C58353347555008F83562E5401A86318BF0C9FCD2B3486CF4D8747FE6204903192C903C9EB31F7E615B1C41C0F5831625744EF1E424EABF06574C789A7F0665549AB84E44EC5CAE6613AB53F334801CC9</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 AF 92 71 33 BF B0 31 EB 62 FE BB E2
|
||||
0010 | C8 9D 60 7C 63 96 F1 1C B0 17 84 0F A1 06 5D D9
|
||||
0020 | F3 08 DE 8F 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 BC 56 DD DA 98 00 AC EE E3 56 92 3D
|
||||
0010 | 3B D5 D4 98 34 02 67 DD 74 CB D3 B1 86 5D 93 7E
|
||||
0020 | 50 84 4B 4D 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 = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8
|
|||
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 | 4F 88 F0 0B 50 A5 BB 7C 2A 5A 99 BC 57 7C 9F 99
|
||||
0140 | 8C 46 96 3E 35 91 82 7E 8A 2C 60 D4 D4 D0 E4 75
|
||||
0150 | 98 56 63 FE 30 D7 59 3F F9 11 21 E8 AB 3F FC 50
|
||||
0160 | 00 D1 CD 57 76 6F D4 5A A8 AA 99 21 7D 91 5A A3
|
||||
0170 | 98 94 70 80 CA F4 3C CF 0B D8 56 B2 C0 F9 5D 4E
|
||||
0180 | F7 E4 8E 84 2B 55 D7 10 48 3A 15 54 62 CC 1A 40
|
||||
0190 | EE 19 15 FA 67 24 6D 49 AA 39 D5 6F 47 36 CE 16
|
||||
01A0 | FE E1 96 57 DF A4 95 82 FD B5 87 17 57 FA 89 B6
|
||||
01B0 | A3 5A C1 12 6F 46 BA 19 15 E1 56 ED D7 8F F8 09
|
||||
01C0 | 14 C0 14 66 F3 4D 15 8A 9D 2C EA 9E 3F 6A 27 B8
|
||||
01D0 | 36 9D 10 FF AC E3 33 D6 79 87 50 7C EA 9E C8 F9
|
||||
01E0 | 63 87 49 E1 4A 09 F9 F3 15 D2 0E 96 C1 FC 21 58
|
||||
01F0 | C2 C1 66 15 A8 FB 18 ED 7D 29 F3 C1 7C 3F B8 CA
|
||||
0200 | A0 94 15 CB AF A8 1D 34 C1 17 61 30 8A 9D A0 0E
|
||||
0210 | F9 0C 63 8A 87 27 E1 EB 18 2B E4 F0 F8 6C 0F 57
|
||||
0220 | 5A 2B 74 F7 84 43 82 8C 90 53 48 F5 0D F7 99 FE
|
||||
0230 | 45 50 AE 66</code></pre>
|
||||
0130 | C5 2E 1F 6A 98 64 09 87 FC 39 54 D1 83 EC BC 7A
|
||||
0140 | FD 93 23 96 18 3A 4E 15 36 BD 39 BC 82 90 F0 95
|
||||
0150 | F8 43 68 B4 BD 1D 3A 50 A9 FB F0 CA AF B9 7A 03
|
||||
0160 | 4F 02 A9 9A DF 4E A9 77 99 62 91 E1 EA F7 BC 07
|
||||
0170 | 98 24 06 EB 12 66 E9 2B A0 DD 59 35 CD 55 56 70
|
||||
0180 | 43 0A A5 A3 A7 32 59 AB C1 EC BE BB 30 52 7C 58
|
||||
0190 | DB 4C 73 14 1C F7 5A 90 73 4F 1E 49 0E 45 FC FA
|
||||
01A0 | 46 73 C1 FB A0 F7 66 FD 01 84 16 F8 05 74 1D F3
|
||||
01B0 | 84 AD 5A E4 85 C3 B9 A9 49 3A 51 03 B3 88 EA AA
|
||||
01C0 | F6 35 3D 08 FD 70 FB 14 3C 0E 83 28 CF 8E 82 9A
|
||||
01D0 | 93 68 64 11 89 DC 20 31 8D 40 80 85 00 83 CA 41
|
||||
01E0 | CC 10 28 ED AA 0E 6B 9A 1F 3E 65 0C 58 35 33 47
|
||||
01F0 | 55 50 08 F8 35 62 E5 40 1A 86 31 8B F0 C9 FC D2
|
||||
0200 | B3 48 6C F4 D8 74 7F E6 20 49 03 19 2C 90 3C 9E
|
||||
0210 | B3 1F 7E 61 5B 1C 41 C0 F5 83 16 25 74 4E F1 E4
|
||||
0220 | 24 EA BF 06 57 4C 78 9A 7F 06 65 54 9A B8 4E 44
|
||||
0230 | EC 5C AE 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 = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE0001004F88F00B50A5BB7C2A5A99BC</code> <code>577C9F998C46963E3591827E8A2C60D4</code> <code>D4D0E475985663FE30D7593FF91121E8</code> <code>AB3FFC5000D1CD57766FD45AA8AA9921</code> <code>7D915AA398947080CAF43CCF0BD856B2</code> <code>C0F95D4EF7E48E842B55D710483A1554</code> <code>62CC1A40EE1915FA67246D49AA39D56F</code> <code>4736CE16FEE19657DFA49582FDB58717</code> <code>57FA89B6A35AC1126F46BA1915E156ED</code> <code>D78FF80914C01466F34D158A9D2CEA9E</code> <code>3F6A27B8369D10FFACE333D67987507C</code> <code>EA9EC8F9638749E14A09F9F315D20E96</code> <code>C1FC2158C2C16615A8FB18ED7D29F3C1</code> <code>7C3FB8CAA09415CBAFA81D34C1176130</code> <code>8A9DA00EF90C638A8727E1EB182BE4F0</code> <code>F86C0F575A2B74F78443828C905348F5</code><br> <code>0DF799FE</code></td>
|
||||
<td><code>FE000100C52E1F6A98640987FC3954D1</code> <code>83ECBC7AFD932396183A4E1536BD39BC</code> <code>8290F095F84368B4BD1D3A50A9FBF0CA</code> <code>AFB97A034F02A99ADF4EA977996291E1</code> <code>EAF7BC07982406EB1266E92BA0DD5935</code> <code>CD555670430AA5A3A73259ABC1ECBEBB</code> <code>30527C58DB4C73141CF75A90734F1E49</code> <code>0E45FCFA4673C1FBA0F766FD018416F8</code> <code>05741DF384AD5AE485C3B9A9493A5103</code> <code>B388EAAAF6353D08FD70FB143C0E8328</code> <code>CF8E829A9368641189DC20318D408085</code> <code>0083CA41CC1028EDAA0E6B9A1F3E650C</code> <code>58353347555008F83562E5401A86318B</code> <code>F0C9FCD2B3486CF4D8747FE620490319</code> <code>2C903C9EB31F7E615B1C41C0F5831625</code> <code>744EF1E424EABF06574C789A7F066554</code><br> <code>9AB84E44</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>4550AE66</code> (1722699845 in decimal)</td>
|
||||
<td><code>EC5CAE66</code> (1722703084 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8
|
|||
<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 = 9E0F661F51CFCEA725204E0BC8EE07434281C45F0829057E6B54C35954FD88DCFB15191139F03D023A587E5AD19D69CCC714F3B7A45F60DD9470E0E3323ED3C7DEA460C195F2BF4658FDF65581C9252B8A7F2B18E3B5637CB280D90D233B0B898C1FA41106C99D19AA0D9E618329D167D26252BD31F67AB6955B2523242E093709116FB6559051CA49610442415D61DBCE23DA79D03222B7CDB63F6D8602C832F45EF55A910599232FBCF42E6B6CDC5B1A4EC272BC6C4AF08CEEC79E6066AD74DB5017FE805DADBB81736F9F6689A13549449C89136BFAA5E1617C0B5A3CA4BAF6D81015EC69E0FE772E1882189F82D795E7FF870D90102EB149939AB15925F0</code></pre>
|
||||
<pre><code>b = E082394F176FB16DD59C7533CECF7751E200786AF2C21AC5A907E3CB40360512F04639037DEF10A4AEC8B6A18398CDC913EA520FEBC95473F002216B51051674FBF935AF414B286D2DF101702ADFE8429D92938DE77C3F19258F688030F9DC21EF2C64010629BD426AC8EE59DD58C7BCE74E20EB06919D3DBF953607A9EF68BF9C7CC4F8E5564779DB105BF61442615D5CAD3FD326225854F22BECFEAA3C96D013A939D8CA9652BAE7FC9E826C3F24C9977A4CD03AB21EA1D72E83CAA230FDCB4E379328398DC773804638F0DB9F25FFAF8B3CE2F0E64FDF1B497A14B5B6BCFA6F19A0F3F66BF1AEEDA9E773A2AA95A2B22E8F032D8BC49DEDC0CDB61812E2FD</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 = 6EC768DEBBCAFBBEED730BC12F128C848FFAD34D06C4D58D9649F65C797554262AFDDD09A07B03912499D8AF66CB520770DF2B64FDAB3EE527145ED356FE40609E889178EC31195A705A08A21707002B5EA34504805B4072D1165B33A9E2A4B568F922BC1D0B8CB8F4DBDC350939417AE18ADA16CF24B9C221F20BF35F50964D39524F0D73F69BAE714CAB70138C0FC5ACD587EB27049ECC6E46CDBF47AF9EA0B46F5AC839661F7BF27DA27DA24339A0F5FF97F4FC46ACFEA7A64079D6215AC5F85B5AB1F0C69FCF14DCB59E41C01757DE2999020E56143AF7BF8344C58C8F88B1DF349F6025765D6C15ED449D6ABB61E2A0B23D4A56DF1E6A1BFAA2F1337D72</code></pre>
|
||||
<pre><code>g_b = 6AB83A58EF9282B06A4AB8931BB38ED6575E8DA0141CB85ED468050DE5834D72BFC4834860B24F0A02B0204910B358CAF3CD78B35332DE5D3C77842F98A0755EA3FBD27CC20761C252AAEF0FE3F8AF2E374CC8BC49E3CC1877926F21AD10AF82E314FAC7FAAFFC997D92EAB639733CD7648934080BE086766CFCA3DD1D4AA31DAA7C5DA7D3C4127D4E088A478520205978987B23628CE5BF00C44D10D52B61A4752307A4C8E326C6899F22E0275333CD60568789E89A977E5905EBCBF8AB9AF1DA2806C0B6B34F7EEDA1730C142F0DB58862E3AA29E7A85BCAABF1B06816B441091CCBD45A352C1F8290091D3A84FE95B3C3A587AAAA1B5242291BAD0BCAEE5D</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 AF 92 71 33 BF B0 31 EB 62 FE BB E2
|
||||
0010 | C8 9D 60 7C 63 96 F1 1C B0 17 84 0F A1 06 5D D9
|
||||
0020 | F3 08 DE 8F 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 6E C7 68 DE BB CA FB BE ED 73 0B C1 2F 12 8C 84
|
||||
0040 | 8F FA D3 4D 06 C4 D5 8D 96 49 F6 5C 79 75 54 26
|
||||
0050 | 2A FD DD 09 A0 7B 03 91 24 99 D8 AF 66 CB 52 07
|
||||
0060 | 70 DF 2B 64 FD AB 3E E5 27 14 5E D3 56 FE 40 60
|
||||
0070 | 9E 88 91 78 EC 31 19 5A 70 5A 08 A2 17 07 00 2B
|
||||
0080 | 5E A3 45 04 80 5B 40 72 D1 16 5B 33 A9 E2 A4 B5
|
||||
0090 | 68 F9 22 BC 1D 0B 8C B8 F4 DB DC 35 09 39 41 7A
|
||||
00A0 | E1 8A DA 16 CF 24 B9 C2 21 F2 0B F3 5F 50 96 4D
|
||||
00B0 | 39 52 4F 0D 73 F6 9B AE 71 4C AB 70 13 8C 0F C5
|
||||
00C0 | AC D5 87 EB 27 04 9E CC 6E 46 CD BF 47 AF 9E A0
|
||||
00D0 | B4 6F 5A C8 39 66 1F 7B F2 7D A2 7D A2 43 39 A0
|
||||
00E0 | F5 FF 97 F4 FC 46 AC FE A7 A6 40 79 D6 21 5A C5
|
||||
00F0 | F8 5B 5A B1 F0 C6 9F CF 14 DC B5 9E 41 C0 17 57
|
||||
0100 | DE 29 99 02 0E 56 14 3A F7 BF 83 44 C5 8C 8F 88
|
||||
0110 | B1 DF 34 9F 60 25 76 5D 6C 15 ED 44 9D 6A BB 61
|
||||
0120 | E2 A0 B2 3D 4A 56 DF 1E 6A 1B FA A2 F1 33 7D 72</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 BC 56 DD DA 98 00 AC EE E3 56 92 3D
|
||||
0010 | 3B D5 D4 98 34 02 67 DD 74 CB D3 B1 86 5D 93 7E
|
||||
0020 | 50 84 4B 4D 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 6A B8 3A 58 EF 92 82 B0 6A 4A B8 93 1B B3 8E D6
|
||||
0040 | 57 5E 8D A0 14 1C B8 5E D4 68 05 0D E5 83 4D 72
|
||||
0050 | BF C4 83 48 60 B2 4F 0A 02 B0 20 49 10 B3 58 CA
|
||||
0060 | F3 CD 78 B3 53 32 DE 5D 3C 77 84 2F 98 A0 75 5E
|
||||
0070 | A3 FB D2 7C C2 07 61 C2 52 AA EF 0F E3 F8 AF 2E
|
||||
0080 | 37 4C C8 BC 49 E3 CC 18 77 92 6F 21 AD 10 AF 82
|
||||
0090 | E3 14 FA C7 FA AF FC 99 7D 92 EA B6 39 73 3C D7
|
||||
00A0 | 64 89 34 08 0B E0 86 76 6C FC A3 DD 1D 4A A3 1D
|
||||
00B0 | AA 7C 5D A7 D3 C4 12 7D 4E 08 8A 47 85 20 20 59
|
||||
00C0 | 78 98 7B 23 62 8C E5 BF 00 C4 4D 10 D5 2B 61 A4
|
||||
00D0 | 75 23 07 A4 C8 E3 26 C6 89 9F 22 E0 27 53 33 CD
|
||||
00E0 | 60 56 87 89 E8 9A 97 7E 59 05 EB CB F8 AB 9A F1
|
||||
00F0 | DA 28 06 C0 B6 B3 4F 7E ED A1 73 0C 14 2F 0D B5
|
||||
0100 | 88 62 E3 AA 29 E7 A8 5B CA AB F1 B0 68 16 B4 41
|
||||
0110 | 09 1C CB D4 5A 35 2C 1F 82 90 09 1D 3A 84 FE 95
|
||||
0120 | B3 C3 A5 87 AA AA 1B 52 42 29 1B AD 0B CA EE 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 = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001006EC768DEBBCAFBBEED730BC1</code> <code>2F128C848FFAD34D06C4D58D9649F65C</code> <code>797554262AFDDD09A07B03912499D8AF</code> <code>66CB520770DF2B64FDAB3EE527145ED3</code> <code>56FE40609E889178EC31195A705A08A2</code> <code>1707002B5EA34504805B4072D1165B33</code> <code>A9E2A4B568F922BC1D0B8CB8F4DBDC35</code> <code>0939417AE18ADA16CF24B9C221F20BF3</code> <code>5F50964D39524F0D73F69BAE714CAB70</code> <code>138C0FC5ACD587EB27049ECC6E46CDBF</code> <code>47AF9EA0B46F5AC839661F7BF27DA27D</code> <code>A24339A0F5FF97F4FC46ACFEA7A64079</code> <code>D6215AC5F85B5AB1F0C69FCF14DCB59E</code> <code>41C01757DE2999020E56143AF7BF8344</code> <code>C58C8F88B1DF349F6025765D6C15ED44</code> <code>9D6ABB61E2A0B23D4A56DF1E6A1BFAA2</code><br> <code>F1337D72</code></td>
|
||||
<td><code>FE0001006AB83A58EF9282B06A4AB893</code> <code>1BB38ED6575E8DA0141CB85ED468050D</code> <code>E5834D72BFC4834860B24F0A02B02049</code> <code>10B358CAF3CD78B35332DE5D3C77842F</code> <code>98A0755EA3FBD27CC20761C252AAEF0F</code> <code>E3F8AF2E374CC8BC49E3CC1877926F21</code> <code>AD10AF82E314FAC7FAAFFC997D92EAB6</code> <code>39733CD7648934080BE086766CFCA3DD</code> <code>1D4AA31DAA7C5DA7D3C4127D4E088A47</code> <code>8520205978987B23628CE5BF00C44D10</code> <code>D52B61A4752307A4C8E326C6899F22E0</code> <code>275333CD60568789E89A977E5905EBCB</code> <code>F8AB9AF1DA2806C0B6B34F7EEDA1730C</code> <code>142F0DB58862E3AA29E7A85BCAABF1B0</code> <code>6816B441091CCBD45A352C1F8290091D</code> <code>3A84FE95B3C3A587AAAA1B5242291BAD</code><br> <code>0BCAEE5D</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 = BA0D89B5AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8
|
|||
<!-- 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 = 54B64366AF927133BFB031EB62FEBBE2C89D607C6396F11CB017840FA1065DD9F308DE8F0000000000000000FE0001006EC768DEBBCAFBBEED730BC12F128C848FFAD34D06C4D58D9649F65C797554262AFDDD09A07B03912499D8AF66CB520770DF2B64FDAB3EE527145ED356FE40609E889178EC31195A705A08A21707002B5EA34504805B4072D1165B33A9E2A4B568F922BC1D0B8CB8F4DBDC350939417AE18ADA16CF24B9C221F20BF35F50964D39524F0D73F69BAE714CAB70138C0FC5ACD587EB27049ECC6E46CDBF47AF9EA0B46F5AC839661F7BF27DA27DA24339A0F5FF97F4FC46ACFEA7A64079D6215AC5F85B5AB1F0C69FCF14DCB59E41C01757DE2999020E56143AF7BF8344C58C8F88B1DF349F6025765D6C15ED449D6ABB61E2A0B23D4A56DF1E6A1BFAA2F1337D72
|
||||
padding = 180010567E76A8A7704FE13E
|
||||
tmp_aes_key = B95F44958D683B3A8A09C088941CCC6A5CD73B89A57E9BE072534FBA65DF05C2
|
||||
tmp_aes_iv = 3AA4C62218DE342CE601730DA19A89BAE878CFB77912FF7AC45C512CAF07B0E4</code></pre>
|
||||
<pre><code>data = 54B64366BC56DDDA9800ACEEE356923D3BD5D498340267DD74CBD3B1865D937E50844B4D0000000000000000FE0001006AB83A58EF9282B06A4AB8931BB38ED6575E8DA0141CB85ED468050DE5834D72BFC4834860B24F0A02B0204910B358CAF3CD78B35332DE5D3C77842F98A0755EA3FBD27CC20761C252AAEF0FE3F8AF2E374CC8BC49E3CC1877926F21AD10AF82E314FAC7FAAFFC997D92EAB639733CD7648934080BE086766CFCA3DD1D4AA31DAA7C5DA7D3C4127D4E088A478520205978987B23628CE5BF00C44D10D52B61A4752307A4C8E326C6899F22E0275333CD60568789E89A977E5905EBCBF8AB9AF1DA2806C0B6B34F7EEDA1730C142F0DB58862E3AA29E7A85BCAABF1B06816B441091CCBD45A352C1F8290091D3A84FE95B3C3A587AAAA1B5242291BAD0BCAEE5D
|
||||
padding = 3AFC393534D0482E0070F29C
|
||||
tmp_aes_key = A1484E0939FC4D1323ADA4C191556735B8946957EE87CD82226F0176D7B27591
|
||||
tmp_aes_iv = E2A113E17B14FEAE1BD1D541DA6BB815F371D9E6D66C7B3AEA8BD5F2FE9D9DB1</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 = 71FD580C86931377F1FEEC2CFFFD03D71C055AAEB74B6353BE631D25850AB07A8B5A23232E87519E91B54658F0FEEFB5D63DE1A0BEB130BE9A04B9405E5AD01F73586188BE3FD9F0EEF3A74098173E8F74E6BCCCCC7744ADB92C68704E990962E1CA2341577B1EC7DA8D60E5CDCFAE5EC957AF2DED735CA5B8DFC6507EC2F04C144FFA1CA78AE4E02591D18F322901CAE2CE029DB15FA69C8A60E32930675A93F8A2A739B7889167898B430C638B8BCD8874C9AB611EE8A3EDCED8D2714FD6DB7BA23B559A9F9F33BA7F6FDD1E2552E8EBD201F4BFEE014C1D6EF2A8F5BA439C266ADBD84990C51BBBC6077A55368D2E99249CC5A4217EC78C00C20E99510E7781B90438C8059180D6E195B3D99908A3D1443B130A92CD272E24FD7DE7AFB61807AE43E17A252D41E6E6E73B0E601DF70494742AF87588AD824E6443ED12A3C3850F69339FF5DE9A13E8DB10EBE170D0</code></pre>
|
||||
<pre><code>encrypted_data = AA4868A4612CCB34624534DB0C6E29C132661A4B9A637F96D88BA71B92A8C4947247B521F8FB5A7234C1DB657FE58667D50059B8CF6A952BACC95CBAD0F924F968C988B5EF737A076696C0067E2588D014C3A1CA987773C552C7B4E079B4EFD1D616F51C1D3BE28DB77369DF874F1821F9A8415B5BD9087DA53B19A9B4F111CF05F03D8993AD51C1EEB51A8CC8EB644785FAB108C59652EC859B33AC6EB8982F833620F1C2FC69EEA301D86C838B6559626EDDA8EC0AFD3503B59CF2324061CDA4DFC7CC138C9E815366693493066093C720639DBB291CDF4AC5CE3EEEEAB9D6A22744E682A570ED6E7381D13F90E251AEFD09998FC070E485C308ACA87F3A77957442277B0603D2874B59FFB5B12D2851BE9606CBEC0909F817BD2DFC929E92D7AE074DAFAFAAE7CE816E9AB8A8FD1777A49222482CD8F2CC0ED86E43946BF0CF41C1E2E37582CAF98525F286505DF5</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 7C 99 0C 00 45 50 AE 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 AF 92 71 33 BF B0 31 EB
|
||||
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
|
||||
0030 | A1 06 5D D9 F3 08 DE 8F FE 50 01 00 71 FD 58 0C
|
||||
0040 | 86 93 13 77 F1 FE EC 2C FF FD 03 D7 1C 05 5A AE
|
||||
0050 | B7 4B 63 53 BE 63 1D 25 85 0A B0 7A 8B 5A 23 23
|
||||
0060 | 2E 87 51 9E 91 B5 46 58 F0 FE EF B5 D6 3D E1 A0
|
||||
0070 | BE B1 30 BE 9A 04 B9 40 5E 5A D0 1F 73 58 61 88
|
||||
0080 | BE 3F D9 F0 EE F3 A7 40 98 17 3E 8F 74 E6 BC CC
|
||||
0090 | CC 77 44 AD B9 2C 68 70 4E 99 09 62 E1 CA 23 41
|
||||
00A0 | 57 7B 1E C7 DA 8D 60 E5 CD CF AE 5E C9 57 AF 2D
|
||||
00B0 | ED 73 5C A5 B8 DF C6 50 7E C2 F0 4C 14 4F FA 1C
|
||||
00C0 | A7 8A E4 E0 25 91 D1 8F 32 29 01 CA E2 CE 02 9D
|
||||
00D0 | B1 5F A6 9C 8A 60 E3 29 30 67 5A 93 F8 A2 A7 39
|
||||
00E0 | B7 88 91 67 89 8B 43 0C 63 8B 8B CD 88 74 C9 AB
|
||||
00F0 | 61 1E E8 A3 ED CE D8 D2 71 4F D6 DB 7B A2 3B 55
|
||||
0100 | 9A 9F 9F 33 BA 7F 6F DD 1E 25 52 E8 EB D2 01 F4
|
||||
0110 | BF EE 01 4C 1D 6E F2 A8 F5 BA 43 9C 26 6A DB D8
|
||||
0120 | 49 90 C5 1B BB C6 07 7A 55 36 8D 2E 99 24 9C C5
|
||||
0130 | A4 21 7E C7 8C 00 C2 0E 99 51 0E 77 81 B9 04 38
|
||||
0140 | C8 05 91 80 D6 E1 95 B3 D9 99 08 A3 D1 44 3B 13
|
||||
0150 | 0A 92 CD 27 2E 24 FD 7D E7 AF B6 18 07 AE 43 E1
|
||||
0160 | 7A 25 2D 41 E6 E6 E7 3B 0E 60 1D F7 04 94 74 2A
|
||||
0170 | F8 75 88 AD 82 4E 64 43 ED 12 A3 C3 85 0F 69 33
|
||||
0180 | 9F F5 DE 9A 13 E8 DB 10 EB E1 70 D0</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 40 90 02 00 ED 5C AE 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 BC 56 DD DA 98 00 AC EE
|
||||
0020 | E3 56 92 3D 3B D5 D4 98 34 02 67 DD 74 CB D3 B1
|
||||
0030 | 86 5D 93 7E 50 84 4B 4D FE 50 01 00 AA 48 68 A4
|
||||
0040 | 61 2C CB 34 62 45 34 DB 0C 6E 29 C1 32 66 1A 4B
|
||||
0050 | 9A 63 7F 96 D8 8B A7 1B 92 A8 C4 94 72 47 B5 21
|
||||
0060 | F8 FB 5A 72 34 C1 DB 65 7F E5 86 67 D5 00 59 B8
|
||||
0070 | CF 6A 95 2B AC C9 5C BA D0 F9 24 F9 68 C9 88 B5
|
||||
0080 | EF 73 7A 07 66 96 C0 06 7E 25 88 D0 14 C3 A1 CA
|
||||
0090 | 98 77 73 C5 52 C7 B4 E0 79 B4 EF D1 D6 16 F5 1C
|
||||
00A0 | 1D 3B E2 8D B7 73 69 DF 87 4F 18 21 F9 A8 41 5B
|
||||
00B0 | 5B D9 08 7D A5 3B 19 A9 B4 F1 11 CF 05 F0 3D 89
|
||||
00C0 | 93 AD 51 C1 EE B5 1A 8C C8 EB 64 47 85 FA B1 08
|
||||
00D0 | C5 96 52 EC 85 9B 33 AC 6E B8 98 2F 83 36 20 F1
|
||||
00E0 | C2 FC 69 EE A3 01 D8 6C 83 8B 65 59 62 6E DD A8
|
||||
00F0 | EC 0A FD 35 03 B5 9C F2 32 40 61 CD A4 DF C7 CC
|
||||
0100 | 13 8C 9E 81 53 66 69 34 93 06 60 93 C7 20 63 9D
|
||||
0110 | BB 29 1C DF 4A C5 CE 3E EE EA B9 D6 A2 27 44 E6
|
||||
0120 | 82 A5 70 ED 6E 73 81 D1 3F 90 E2 51 AE FD 09 99
|
||||
0130 | 8F C0 70 E4 85 C3 08 AC A8 7F 3A 77 95 74 42 27
|
||||
0140 | 7B 06 03 D2 87 4B 59 FF B5 B1 2D 28 51 BE 96 06
|
||||
0150 | CB EC 09 09 F8 17 BD 2D FC 92 9E 92 D7 AE 07 4D
|
||||
0160 | AF AF AA E7 CE 81 6E 9A B8 A8 FD 17 77 A4 92 22
|
||||
0170 | 48 2C D8 F2 CC 0E D8 6E 43 94 6B F0 CF 41 C1 E2
|
||||
0180 | E3 75 82 CA F9 85 25 F2 86 50 5D F5</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>7C990C004550AE66</code></td>
|
||||
<td><code>40900200ED5CAE66</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>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE50010071FD580C86931377F1FEEC2C</code> <code>FFFD03D71C055AAEB74B6353BE631D25</code> <code>850AB07A8B5A23232E87519E91B54658</code> <code>F0FEEFB5D63DE1A0BEB130BE9A04B940</code> <code>5E5AD01F73586188BE3FD9F0EEF3A740</code> <code>98173E8F74E6BCCCCC7744ADB92C6870</code> <code>4E990962E1CA2341577B1EC7DA8D60E5</code> <code>CDCFAE5EC957AF2DED735CA5B8DFC650</code> <code>7EC2F04C144FFA1CA78AE4E02591D18F</code> <code>322901CAE2CE029DB15FA69C8A60E329</code> <code>30675A93F8A2A739B7889167898B430C</code> <code>638B8BCD8874C9AB611EE8A3EDCED8D2</code> <code>714FD6DB7BA23B559A9F9F33BA7F6FDD</code> <code>1E2552E8EBD201F4BFEE014C1D6EF2A8</code> <code>F5BA439C266ADBD84990C51BBBC6077A</code> <code>55368D2E99249CC5A4217EC78C00C20E</code> <code>99510E7781B90438C8059180D6E195B3</code> <code>D99908A3D1443B130A92CD272E24FD7D</code> <code>E7AFB61807AE43E17A252D41E6E6E73B</code> <code>0E601DF70494742AF87588AD824E6443</code> <code>ED12A3C3850F69339FF5DE9A13E8DB10</code><br> <code>EBE170D0</code></td>
|
||||
<td><code>FE500100AA4868A4612CCB34624534DB</code> <code>0C6E29C132661A4B9A637F96D88BA71B</code> <code>92A8C4947247B521F8FB5A7234C1DB65</code> <code>7FE58667D50059B8CF6A952BACC95CBA</code> <code>D0F924F968C988B5EF737A076696C006</code> <code>7E2588D014C3A1CA987773C552C7B4E0</code> <code>79B4EFD1D616F51C1D3BE28DB77369DF</code> <code>874F1821F9A8415B5BD9087DA53B19A9</code> <code>B4F111CF05F03D8993AD51C1EEB51A8C</code> <code>C8EB644785FAB108C59652EC859B33AC</code> <code>6EB8982F833620F1C2FC69EEA301D86C</code> <code>838B6559626EDDA8EC0AFD3503B59CF2</code> <code>324061CDA4DFC7CC138C9E8153666934</code> <code>93066093C720639DBB291CDF4AC5CE3E</code> <code>EEEAB9D6A22744E682A570ED6E7381D1</code> <code>3F90E251AEFD09998FC070E485C308AC</code> <code>A87F3A77957442277B0603D2874B59FF</code> <code>B5B12D2851BE9606CBEC0909F817BD2D</code> <code>FC929E92D7AE074DAFAFAAE7CE816E9A</code> <code>B8A8FD1777A49222482CD8F2CC0ED86E</code> <code>43946BF0CF41C1E2E37582CAF98525F2</code><br> <code>86505DF5</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 = 6DF3C5B8246084FC9F2C3492FD3C06910871F7FB5F27E4F826A4F832E4AD5AE313C0D2BB98B20F892EA21FB4ADB494E44A3A95F162341B3C86E47086C0C0D50F768936DF8429B55CEBC066C6D0EF5EB6D247E3018D47203DCF9A5DC0BFC7B89CAA7E05D2466088A805C54462FAFE42E8BE591954B6C267E53845E0859B8BCF84E61411B38B19A039012300192C65B0B210EDB2640D36147722D73ED208C2D2B6EE77637A78C4A739217ADBCD4BEA8869E2DA272BF12919515649DC4C19369FDC129103EA2A61B3B792F5F7DE5E3CD8655C0B96B4E54579D19E79C3EEA2F50552F7DD08F5EE39A1E890CB30E3DF4531C7267A66626472475FD5E3D928A1EA4DF8</code></pre>
|
||||
<pre><code>auth_key = 1091807488E1D8ABAD12265760F521FC8971716BC3EBAEA665C84025B5B308CD09AC3036614651228DB20FC95E36769EF2B258B1F34DD95CD1E8B35C837ADAE8C362B1CD1A1129BCF818CFB4718C01F97BE7EEF4DF2B8BEEE7EF8878060C46BF985099626ECFFDA0454ABA84F2E006EEDFEB5ED9164BADE21505DCBCE61C659C199A9B11AFE796408C40498E99C4D4DF8BB8C14F911AD4543E7332D5D0978981D8EB9EC0DF845BC58E43CE96ADA4B657338B4E1762AF26692B00D1B56CD3BF2FAAB4436447E26363C00CB6A03EA7381509280168D6835A9294184CD6829560FE79116171EF8FD026C743537C00D7306C0BC06203BD757A536612C06B38F84CB5</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 10 9A 55 46 50 AE 66
|
||||
0010 | 70 00 00 00 34 F7 CB 3B AF 92 71 33 BF B0 31 EB
|
||||
0020 | 62 FE BB E2 C8 9D 60 7C 63 96 F1 1C B0 17 84 0F
|
||||
0030 | A1 06 5D D9 F3 08 DE 8F CD B9 26 41 D5 19 38 54
|
||||
0040 | 67 85 AE F3 77 86 62 EE</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 A8 B8 B2 EE 5C AE 66
|
||||
0010 | 94 00 00 00 34 F7 CB 3B BC 56 DD DA 98 00 AC EE
|
||||
0020 | E3 56 92 3D 3B D5 D4 98 34 02 67 DD 74 CB D3 B1
|
||||
0030 | 86 5D 93 7E 50 84 4B 4D 6E 6C 08 74 7B 15 BB BF
|
||||
0040 | D5 7C 08 CC 46 5A 7B F4</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>01109A554650AE66</code></td>
|
||||
<td><code>01A8B8B2EE5CAE66</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>70000000</code> (112 in decimal)</td>
|
||||
<td><code>94000000</code> (148 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>AF927133BFB031EB62FEBBE2C89D607C</code></td>
|
||||
<td><code>BC56DDDA9800ACEEE356923D3BD5D498</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>6396F11CB017840FA1065DD9F308DE8F</code></td>
|
||||
<td><code>340267DD74CBD3B1865D937E50844B4D</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>CDB92641D51938546785AEF3778662EE</code></td>
|
||||
<td><code>6E6C08747B15BBBFD57C08CC465A7BF4</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>
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><a href="/constructor/starsTransactionPeer">starsTransactionPeer</a></td>
|
||||
<td>Describes a <a href="/api/stars">Telegram Star</a> transaction with another peer (usually a bot or a channel).</td>
|
||||
<td>Describes a <a href="/api/stars">Telegram Star</a> transaction with another peer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/constructor/starsTransactionPeerAds">starsTransactionPeerAds</a></td>
|
||||
|
|
Loading…
Add table
Reference in a new issue