mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-19 06:51:28 +01:00
Update content of files
This commit is contained in:
parent
cc4a70d4a8
commit
72461cb58a
3 changed files with 266 additions and 209 deletions
|
@ -82,6 +82,18 @@
|
|||
<li>Changed type of <strong>provider</strong> from <strong>string</strong> to <strong>flags.3?string</strong> in <a href="/constructor/inputMediaInvoice">inputMediaInvoice</a></li>
|
||||
<li>Added <strong>flags</strong>, <strong>collapsed</strong> parameters in <a href="/constructor/messageEntityBlockquote">messageEntityBlockquote</a></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#push-notification-changes" id="push-notification-changes" name="push-notification-changes"><i class="anchor-icon"></i></a>PUSH notification changes</h4>
|
||||
<h5><a class="anchor" href="#new-push-notifications" id="new-push-notifications" name="new-push-notifications"><i class="anchor-icon"></i></a>New PUSH notifications</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_PAID_MEDIA</a> - <code>{1} posted a paid post for {2} star</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_PAID_MEDIA</a> - <code>{1} posted a paid post in {2} group for {3} star</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_REACT_PAID_MEDIA</a> - <code>{1} reacted {3} in group {2} to your paid post for {4} star</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_PAID_MEDIA</a> - <code>{1} sent you a paid post for {2} star</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">PINNED_PAID_MEDIA</a> - <code>{1} pinned a paid post for {2} star</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">REACT_HIDDEN</a> - <code>New reaction to your message</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">REACT_STORY</a> - <code>{1}: {2} to your story</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">REACT_STORY_HIDDEN</a> - <code>New reaction to your story</code></li>
|
||||
</ul>
|
||||
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
|
||||
<div><pre><code><a href="/constructor/message">message</a>#94345242 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> from_scheduled:flags.18?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> edit_hide:flags.21?<a href="/constructor/true">true</a> pinned:flags.24?<a href="/constructor/true">true</a> noforwards:flags.26?<a href="/constructor/true">true</a> invert_media:flags.27?<a href="/constructor/true">true</a> flags2:<a href="/type/%23">#</a> offline:flags2.1?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> from_boosts_applied:flags.29?<a href="/type/int">int</a> peer_id:<a href="/type/Peer">Peer</a> saved_peer_id:flags.28?<a href="/type/Peer">Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long">long</a> via_business_bot_id:flags2.0?<a href="/type/long">long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> message:<a href="/type/string">string</a> media:flags.9?<a href="/type/MessageMedia">MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup">ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>> views:flags.10?<a href="/type/int">int</a> forwards:flags.10?<a href="/type/int">int</a> replies:flags.23?<a href="/type/MessageReplies">MessageReplies</a> edit_date:flags.15?<a href="/type/int">int</a> post_author:flags.16?<a href="/type/string">string</a> grouped_id:flags.17?<a href="/type/long">long</a> reactions:flags.20?<a href="/type/MessageReactions">MessageReactions</a> restriction_reason:flags.22?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> ttl_period:flags.25?<a href="/type/int">int</a> quick_reply_shortcut_id:flags.30?<a href="/type/int">int</a> effect:flags2.2?<a href="/type/long">long</a> factcheck:flags2.3?<a href="/type/FactCheck">FactCheck</a> = <a href="/type/Message">Message</a>;<br>
|
||||
<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>;<br>
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>Handling PUSH-notifications</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="How to subscribe to and handle PUSH notifications ">
|
||||
<meta property="description" content="How to subscribe to and handle PUSH notifications">
|
||||
<meta property="og:title" content="Handling PUSH-notifications">
|
||||
<meta property="og:image" content="f171b7d56879c20c22">
|
||||
<meta property="og:description" content="How to subscribe to and handle PUSH notifications ">
|
||||
<meta property="og:description" content="How to subscribe to and handle PUSH notifications">
|
||||
<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">
|
||||
|
@ -260,6 +260,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. Channel name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHANNEL_MESSAGE_PAID_MEDIA</td>
|
||||
<td>{1} posted a paid post for {2} star</td>
|
||||
<td>1. Channel name<br>2. <a href="/api/stars">Stars</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHANNEL_MESSAGE_PHOTO</td>
|
||||
<td>{1} posted a photo</td>
|
||||
<td>1. Channel name</td>
|
||||
|
@ -420,6 +425,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. Message author<br>2. Chat name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_MESSAGE_PAID_MEDIA</td>
|
||||
<td>{1} posted a paid post in {2} group for {3} star</td>
|
||||
<td>1. Message author<br>2. Chat name<br>3. <a href="/api/stars">Stars</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_MESSAGE_PHOTO</td>
|
||||
<td>{1} sent a photo to the group {2}</td>
|
||||
<td>1. Message author<br>2. Chat name</td>
|
||||
|
@ -530,6 +540,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. User name<br>2. Group name<br>3. Reaction</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_REACT_PAID_MEDIA</td>
|
||||
<td>{1} reacted {3} in group {2} to your paid post for {4} star</td>
|
||||
<td>1. User name<br>2. Group name<br>3. Reaction<br>4. <a href="/api/stars">Stars</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_REACT_PHOTO</td>
|
||||
<td>{1}: {3} to your photo in {2}</td>
|
||||
<td>1. User name<br>2. Group name<br>3. Reaction</td>
|
||||
|
@ -700,6 +715,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. Message author</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_PAID_MEDIA</td>
|
||||
<td>{1} sent you a paid post for {2} star</td>
|
||||
<td>1. Message author<br>2. <a href="/api/stars">Stars</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_PHOTO</td>
|
||||
<td>{1} sent you a photo</td>
|
||||
<td>1. Message author</td>
|
||||
|
@ -910,6 +930,16 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. User name<br>2. Group name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PINNED_PAID_MEDIA</td>
|
||||
<td>{1} pinned a paid post for {2} star</td>
|
||||
<td>1. User name<br>2. <a href="/api/stars">Stars</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PINNED_PAID_MEDIA</td>
|
||||
<td>{1} pinned a paid post for {3} star in the group {2}</td>
|
||||
<td>1. User name<br>2. Group name<br>3. <a href="/api/stars">Stars</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PINNED_PHOTO</td>
|
||||
<td>{1} pinned a photo</td>
|
||||
<td>1. User name</td>
|
||||
|
@ -1020,6 +1050,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. User name<br>2. Reaction</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>REACT_HIDDEN</td>
|
||||
<td>New reaction to your message</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>REACT_INVOICE</td>
|
||||
<td>{1}: {2} to your invoice</td>
|
||||
<td>1. User name<br>2. Reaction</td>
|
||||
|
@ -1055,6 +1090,16 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. User name<br>2. Reaction<br>3. Sticker emoji</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>REACT_STORY</td>
|
||||
<td>{1}: {2} to your story</td>
|
||||
<td>1. User name<br>2. Reaction</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>REACT_STORY_HIDDEN</td>
|
||||
<td>New reaction to your story</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>REACT_TEXT</td>
|
||||
<td>{1}: {2} to your "{3}"</td>
|
||||
<td>1. User name<br>2. Reaction<br>3. Message body</td>
|
||||
|
@ -1066,7 +1111,7 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
</tr>
|
||||
<tr>
|
||||
<td>STORY_HIDDEN_AUTHOR</td>
|
||||
<td>A new story was posted (comment: emitted when previews are hidden for this peer)</td>
|
||||
<td>A new story was posted</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -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 20 4B 04 00 11 C3 8E 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 72 FA 62 CB 49 68 CB AD
|
||||
0020 | 5C 60 5D E6 59 FE FD 0B</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 F0 DB 05 00 55 89 92 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 89 FB 77 7C 8C 42 40 7D
|
||||
0020 | 30 CB 64 E1 07 48 47 79</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>204B040011C38E66</code></td>
|
||||
<td><code>F0DB050055899266</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>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</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 D8 CF 8C 11 C3 8E 66
|
||||
0010 | 84 00 00 00 63 24 16 05 72 FA 62 CB 49 68 CB AD
|
||||
0020 | 5C 60 5D E6 59 FE FD 0B 5B D3 A1 EF 21 35 54 40
|
||||
0030 | 23 2B DA 93 B7 8E 9F F5 08 12 C5 0E 7E EF C2 79
|
||||
0040 | E3 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 1C 95 AB 55 89 92 66
|
||||
0010 | 60 00 00 00 63 24 16 05 89 FB 77 7C 8C 42 40 7D
|
||||
0020 | 30 CB 64 E1 07 48 47 79 CF CE B2 41 BE 2A 24 10
|
||||
0030 | 2B 70 B4 7F DF CF 82 A1 08 0E A0 DF 9B DC CA A2
|
||||
0040 | 4D 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>01D8CF8C11C38E66</code></td>
|
||||
<td><code>011C95AB55899266</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>84000000</code> (132 in decimal)</td>
|
||||
<td><code>60000000</code> (96 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>0812C50E7EEFC279E3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1352503201445870051</td>
|
||||
<td><code>080EA0DF9BDCCAA24D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1054088173321888333</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 = 1352503201445870051</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1352503201445870051 = 1110959063 * 1217419477</code></p>
|
||||
<pre><code>p = 1110959063
|
||||
q = 1217419477</code></pre>
|
||||
<pre><code>pq = 1054088173321888333</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1054088173321888333 = 1019213933 * 1034216801</code></p>
|
||||
<pre><code>p = 1019213933
|
||||
q = 1034216801</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 12 C5 0E 7E EF C2 79 E3 00 00 00
|
||||
0010 | 04 42 37 E3 D7 00 00 00 04 48 90 58 D5 00 00 00
|
||||
0020 | 72 FA 62 CB 49 68 CB AD 5C 60 5D E6 59 FE FD 0B
|
||||
0030 | 5B D3 A1 EF 21 35 54 40 23 2B DA 93 B7 8E 9F F5
|
||||
0040 | 41 A6 C4 93 12 07 FB 3B EA C4 06 BA 88 70 15 C3
|
||||
0050 | 97 52 A3 E1 CF 6A E8 E3 67 7B A5 5A F2 54 47 AD
|
||||
<pre><code>0000 | 95 5F F5 A9 08 0E A0 DF 9B DC CA A2 4D 00 00 00
|
||||
0010 | 04 3C BF F8 6D 00 00 00 04 3D A4 E5 61 00 00 00
|
||||
0020 | 89 FB 77 7C 8C 42 40 7D 30 CB 64 E1 07 48 47 79
|
||||
0030 | CF CE B2 41 BE 2A 24 10 2B 70 B4 7F DF CF 82 A1
|
||||
0040 | 71 93 D8 0C 98 86 4F C9 59 7D D6 07 15 42 F1 D9
|
||||
0050 | 1E 7F B6 E4 BE 10 C4 13 8B 17 0F 20 F4 E0 CE 61
|
||||
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 = 1217419477</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>0812C50E7EEFC279E3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1352503201445870051</td>
|
||||
<td><code>080EA0DF9BDCCAA24D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1054088173321888333</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>044237E3D7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1110959063</td>
|
||||
<td><code>043CBFF86D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1019213933</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>04489058D5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1217419477</td>
|
||||
<td><code>043DA4E561000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1034216801</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>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>41A6C4931207FB3BEAC406BA887015C3</code> <code>9752A3E1CF6AE8E3677BA55AF25447AD</code></td>
|
||||
<td><code>7193D80C98864FC9597DD6071542F1D9</code> <code>1E7FB6E4BE10C4138B170F20F4E0CE61</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1217419477</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 = 955FF5A90812C50E7EEFC279E3000000044237E3D700000004489058D500000072FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF541A6C4931207FB3BEAC406BA887015C39752A3E1CF6AE8E3677BA55AF25447AD02000000
|
||||
random_padding_bytes = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A9503B880F3A3DC6EEEE86EED9F7A8B2C0268B9AA5E61931572E6DAE674F415827F50E9350F6BE90049D2820FFB35E3A203E575B7E66F8E8742B70BECD82AA3218</code></pre>
|
||||
<pre><code>data = 955FF5A9080EA0DF9BDCCAA24D000000043CBFF86D000000043DA4E56100000089FB777C8C42407D30CB64E107484779CFCEB241BE2A24102B70B47FDFCF82A17193D80C98864FC9597DD6071542F1D91E7FB6E4BE10C4138B170F20F4E0CE6102000000
|
||||
random_padding_bytes = 912288A010D91C996D072A907529ECC2B7DC94F0DF3674AAE20ED9CF419A7589DE8083883B0CB4554793D5DC02B5B8FA8580AFBE3C05860D2369176D7E10A678E1FECCE1AF01DBA044EAAF4406EFFB7BB1260C24A696FF5FF6087190</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 = 577E8DF4036E76C60DA462D98E9A7C1FA8EB0353FAC8D40EB29C20D7C734F5AE8432382F36BE92798FC2C8FF28798E18EDC721F91A5A2A11982EAAECEB8F714E9ED19D9502DC44E2EAF0C7745C23DEABB99D5E5688179531F9F81EBAB6AB8DBDB2D05E149F6214835AFC4EAC5EA279FFA9EEF25800EFAF4BEBC6A6312697156795C603CE969179135F7F27DC5CDC0E2CC03BD81FB0223FBAD625F1849514DF92623F2AC8137EEFC565E3B6F9EBDA7C6206E9EC16B7B9AF18FECBCC40B32962BCF2CDD30E50EE64942EB477D014C334E573CECC3D1BD7F4B613E67C27C880F45F675E7646D1B4DC38855F642392A8C1EA184142E08CB732F311D70156E92C9CA5</code></pre>
|
||||
<pre><code>encrypted_data = 1AA4FAEDD65C9C0F8757D8487EDBB3A798113F39F9AAA8AF99C94FF02E79FC01E0FD5028F4D1017CEE4907E57D7FFDD165120B6B2A39A9CFD04EE819F3FD1227A160F7E1BEA95D6AB015D5729074499C2837974EF325BCFD40ACEA0B255F1FD779BDB58878548912F31F827124305A95A634D5BD35261ABC1852ACE87B3CF0D584C639142B6BB192B3F0DBF707521C487B7BBF471881D3E120F2FAADC30B7A357C573822078C0CCA9AA0A22F38C7089935FA057B1E0CA12549586C99C60C363CA90C04E6DFDDCF6D4B0900091B9D4E73D86074C06DC1E1A6887B547E40E90884BAB7BE857A6040D2C3F3C396CE0D926730C9B858C3BF3693904761BEBF14BEAE</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 B8 B2 0D 00 11 C3 8E 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 72 FA 62 CB 49 68 CB AD
|
||||
0020 | 5C 60 5D E6 59 FE FD 0B 5B D3 A1 EF 21 35 54 40
|
||||
0030 | 23 2B DA 93 B7 8E 9F F5 04 42 37 E3 D7 00 00 00
|
||||
0040 | 04 48 90 58 D5 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 57 7E 8D F4 03 6E 76 C6 0D A4 62 D9
|
||||
0060 | 8E 9A 7C 1F A8 EB 03 53 FA C8 D4 0E B2 9C 20 D7
|
||||
0070 | C7 34 F5 AE 84 32 38 2F 36 BE 92 79 8F C2 C8 FF
|
||||
0080 | 28 79 8E 18 ED C7 21 F9 1A 5A 2A 11 98 2E AA EC
|
||||
0090 | EB 8F 71 4E 9E D1 9D 95 02 DC 44 E2 EA F0 C7 74
|
||||
00A0 | 5C 23 DE AB B9 9D 5E 56 88 17 95 31 F9 F8 1E BA
|
||||
00B0 | B6 AB 8D BD B2 D0 5E 14 9F 62 14 83 5A FC 4E AC
|
||||
00C0 | 5E A2 79 FF A9 EE F2 58 00 EF AF 4B EB C6 A6 31
|
||||
00D0 | 26 97 15 67 95 C6 03 CE 96 91 79 13 5F 7F 27 DC
|
||||
00E0 | 5C DC 0E 2C C0 3B D8 1F B0 22 3F BA D6 25 F1 84
|
||||
00F0 | 95 14 DF 92 62 3F 2A C8 13 7E EF C5 65 E3 B6 F9
|
||||
0100 | EB DA 7C 62 06 E9 EC 16 B7 B9 AF 18 FE CB CC 40
|
||||
0110 | B3 29 62 BC F2 CD D3 0E 50 EE 64 94 2E B4 77 D0
|
||||
0120 | 14 C3 34 E5 73 CE CC 3D 1B D7 F4 B6 13 E6 7C 27
|
||||
0130 | C8 80 F4 5F 67 5E 76 46 D1 B4 DC 38 85 5F 64 23
|
||||
0140 | 92 A8 C1 EA 18 41 42 E0 8C B7 32 F3 11 D7 01 56
|
||||
0150 | E9 2C 9C A5</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 0C 80 07 00 55 89 92 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 89 FB 77 7C 8C 42 40 7D
|
||||
0020 | 30 CB 64 E1 07 48 47 79 CF CE B2 41 BE 2A 24 10
|
||||
0030 | 2B 70 B4 7F DF CF 82 A1 04 3C BF F8 6D 00 00 00
|
||||
0040 | 04 3D A4 E5 61 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 1A A4 FA ED D6 5C 9C 0F 87 57 D8 48
|
||||
0060 | 7E DB B3 A7 98 11 3F 39 F9 AA A8 AF 99 C9 4F F0
|
||||
0070 | 2E 79 FC 01 E0 FD 50 28 F4 D1 01 7C EE 49 07 E5
|
||||
0080 | 7D 7F FD D1 65 12 0B 6B 2A 39 A9 CF D0 4E E8 19
|
||||
0090 | F3 FD 12 27 A1 60 F7 E1 BE A9 5D 6A B0 15 D5 72
|
||||
00A0 | 90 74 49 9C 28 37 97 4E F3 25 BC FD 40 AC EA 0B
|
||||
00B0 | 25 5F 1F D7 79 BD B5 88 78 54 89 12 F3 1F 82 71
|
||||
00C0 | 24 30 5A 95 A6 34 D5 BD 35 26 1A BC 18 52 AC E8
|
||||
00D0 | 7B 3C F0 D5 84 C6 39 14 2B 6B B1 92 B3 F0 DB F7
|
||||
00E0 | 07 52 1C 48 7B 7B BF 47 18 81 D3 E1 20 F2 FA AD
|
||||
00F0 | C3 0B 7A 35 7C 57 38 22 07 8C 0C CA 9A A0 A2 2F
|
||||
0100 | 38 C7 08 99 35 FA 05 7B 1E 0C A1 25 49 58 6C 99
|
||||
0110 | C6 0C 36 3C A9 0C 04 E6 DF DD CF 6D 4B 09 00 09
|
||||
0120 | 1B 9D 4E 73 D8 60 74 C0 6D C1 E1 A6 88 7B 54 7E
|
||||
0130 | 40 E9 08 84 BA B7 BE 85 7A 60 40 D2 C3 F3 C3 96
|
||||
0140 | CE 0D 92 67 30 C9 B8 58 C3 BF 36 93 90 47 61 BE
|
||||
0150 | BF 14 BE AE</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 = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A95
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>B8B20D0011C38E66</code></td>
|
||||
<td><code>0C80070055899266</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 = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A95
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>044237E3D7000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1110959063</td>
|
||||
<td><code>043CBFF86D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1019213933</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>04489058D5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1217419477</td>
|
||||
<td><code>043DA4E561000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1034216801</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 = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A95
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE000100577E8DF4036E76C60DA462D9</code> <code>8E9A7C1FA8EB0353FAC8D40EB29C20D7</code> <code>C734F5AE8432382F36BE92798FC2C8FF</code> <code>28798E18EDC721F91A5A2A11982EAAEC</code> <code>EB8F714E9ED19D9502DC44E2EAF0C774</code> <code>5C23DEABB99D5E5688179531F9F81EBA</code> <code>B6AB8DBDB2D05E149F6214835AFC4EAC</code> <code>5EA279FFA9EEF25800EFAF4BEBC6A631</code> <code>2697156795C603CE969179135F7F27DC</code> <code>5CDC0E2CC03BD81FB0223FBAD625F184</code> <code>9514DF92623F2AC8137EEFC565E3B6F9</code> <code>EBDA7C6206E9EC16B7B9AF18FECBCC40</code> <code>B32962BCF2CDD30E50EE64942EB477D0</code> <code>14C334E573CECC3D1BD7F4B613E67C27</code> <code>C880F45F675E7646D1B4DC38855F6423</code> <code>92A8C1EA184142E08CB732F311D70156</code><br> <code>E92C9CA5</code></td>
|
||||
<td><code>FE0001001AA4FAEDD65C9C0F8757D848</code> <code>7EDBB3A798113F39F9AAA8AF99C94FF0</code> <code>2E79FC01E0FD5028F4D1017CEE4907E5</code> <code>7D7FFDD165120B6B2A39A9CFD04EE819</code> <code>F3FD1227A160F7E1BEA95D6AB015D572</code> <code>9074499C2837974EF325BCFD40ACEA0B</code> <code>255F1FD779BDB58878548912F31F8271</code> <code>24305A95A634D5BD35261ABC1852ACE8</code> <code>7B3CF0D584C639142B6BB192B3F0DBF7</code> <code>07521C487B7BBF471881D3E120F2FAAD</code> <code>C30B7A357C573822078C0CCA9AA0A22F</code> <code>38C7089935FA057B1E0CA12549586C99</code> <code>C60C363CA90C04E6DFDDCF6D4B090009</code> <code>1B9D4E73D86074C06DC1E1A6887B547E</code> <code>40E90884BAB7BE857A6040D2C3F3C396</code> <code>CE0D926730C9B858C3BF3693904761BE</code><br> <code>BF14BEAE</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A95
|
|||
<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 80 93 56 12 C3 8E 66
|
||||
0010 | C4 02 00 00 5C 07 E8 D0 72 FA 62 CB 49 68 CB AD
|
||||
0020 | 5C 60 5D E6 59 FE FD 0B 5B D3 A1 EF 21 35 54 40
|
||||
0030 | 23 2B DA 93 B7 8E 9F F5 FE 50 02 00 A3 29 EF BC
|
||||
0040 | 49 B7 79 34 17 02 A9 FE 29 5A 61 F4 BF 7D CB AA
|
||||
0050 | E6 A8 09 63 B7 8F D8 1D DC 77 52 18 42 35 95 20
|
||||
0060 | 0D 58 1F DE 7E 2E 34 C5 EC 22 5E 16 49 67 68 A6
|
||||
0070 | FC AA 73 5A 19 4B 67 60 D6 78 33 EA DC 07 9E F7
|
||||
0080 | 7B 8A CA 9B 98 FE 5C 09 03 D7 C3 B0 4F 62 6D 18
|
||||
0090 | A4 E8 5B 8E 5F 00 1C 16 2D F5 A1 50 B0 E3 09 78
|
||||
00A0 | 51 E2 A9 D8 05 D4 40 2B 08 6C 67 E2 3F 2D 45 26
|
||||
00B0 | 3F 18 5A C2 D1 2F 10 04 B7 63 A6 DD 75 59 F7 09
|
||||
00C0 | B9 C6 10 EA 53 8F A4 F1 A3 37 8A 98 E6 A2 E9 8C
|
||||
00D0 | 8F B2 4C 16 CD BC 6D BB A6 34 63 40 B5 19 B8 EB
|
||||
00E0 | 79 E2 3C AC 58 CE A9 94 7B 78 D0 B5 82 6C A8 BD
|
||||
00F0 | F0 9D DF D5 1D 67 55 39 B4 61 DD 65 D4 A5 B4 E3
|
||||
0100 | 6C 2B 87 30 FF 5F 29 6A 71 98 91 2C 4A 99 99 99
|
||||
0110 | DB B5 1E 38 BA D0 EF B2 BA 26 4B B6 8E B5 74 62
|
||||
0120 | 1F E8 A4 05 FB 0F 0E AC 25 CA 80 01 26 46 2D 16
|
||||
0130 | 9D AC B7 D0 05 2F 16 E2 0C 4F FB 4D 99 EB F7 36
|
||||
0140 | F9 D0 AE 77 60 E3 78 AB 03 5A 02 20 06 62 BF D8
|
||||
0150 | 7C 88 3C 4A F1 D9 25 16 27 AC 2A 2B 02 FE D4 22
|
||||
0160 | 0E 84 1B 36 83 B3 B7 97 29 32 96 27 57 A2 5F 77
|
||||
0170 | 5D FB CC EC 24 BC 07 41 94 7C 6F CF 31 C8 5A D8
|
||||
0180 | 12 99 A5 39 6E BA A0 4D 4B E0 AD 1D 47 E9 27 79
|
||||
0190 | B5 52 FA C8 A5 67 7C 4C 3F 48 43 1F 02 0A 14 51
|
||||
01A0 | 63 C0 D2 5E 29 7B 03 C7 96 CA CE 01 A1 5E 3A F2
|
||||
01B0 | 09 43 0B E5 D0 D8 F8 FA 1E 24 7A F0 F3 4D 5B A0
|
||||
01C0 | 27 1B 08 81 34 BF 60 D9 D8 BA B8 E3 1F D9 A7 C9
|
||||
01D0 | ED B7 DB 4A 1B 20 EA DB 24 B5 3C 0F B6 4B 5E E8
|
||||
01E0 | 3C C1 E2 0E 33 D2 6B 14 9B 8A C7 DB 06 52 A9 E8
|
||||
01F0 | 03 89 39 D9 86 73 04 ED 71 AB 77 23 15 04 ED F2
|
||||
0200 | C9 1D 16 CB A0 FA 42 C9 89 20 A9 9A AD CF D1 8C
|
||||
0210 | 11 DB 66 7E 94 4F C5 8C 79 21 EF 52 B4 2B 5B 38
|
||||
0220 | 49 E2 D6 B6 A8 93 EF 77 08 1E 1B 47 09 7B 6F 85
|
||||
0230 | C4 78 00 0D 21 16 A4 28 ED 28 41 2D FA E9 D4 F7
|
||||
0240 | 49 A3 05 74 22 BE BA 43 1E 6E B5 3D AD 27 F6 2C
|
||||
0250 | F3 CC AC 49 94 BA 5C EC 9B FF 89 5C 39 7E A5 04
|
||||
0260 | 79 B7 29 5E DB DE B1 DD C4 A4 56 8F 4E F8 11 41
|
||||
0270 | 77 5C 02 AA BA 6C A8 F8 2A 58 83 67 50 C9 EC 31
|
||||
0280 | 37 CB 51 E2 45 71 51 DA 4D 56 C6 99</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 6C 36 73 56 89 92 66
|
||||
0010 | 80 02 00 00 5C 07 E8 D0 89 FB 77 7C 8C 42 40 7D
|
||||
0020 | 30 CB 64 E1 07 48 47 79 CF CE B2 41 BE 2A 24 10
|
||||
0030 | 2B 70 B4 7F DF CF 82 A1 FE 50 02 00 97 1C 84 90
|
||||
0040 | 0D 5B 8F 74 CB 63 37 9E 33 E1 AE CC 74 4D 24 8C
|
||||
0050 | 9E 20 58 2B 52 BB 10 79 6E E6 81 8F EC 26 0A 79
|
||||
0060 | 12 31 04 FD C7 06 19 DD EA 97 35 01 55 C4 76 FE
|
||||
0070 | 85 5C DA 48 5A 41 9B C7 3E 2E 65 71 6A 97 DF 68
|
||||
0080 | 14 D5 43 DC 1B 0E 93 FC 62 FF 99 C6 56 7E C7 E2
|
||||
0090 | 28 FF 14 7F F1 C8 79 62 E6 7D A0 33 99 47 00 53
|
||||
00A0 | 80 E1 67 3F 9C 71 71 9A 2C 15 DF 98 04 E6 63 70
|
||||
00B0 | 92 A1 E2 A0 A4 DE 9C 7E BD 4A 79 D6 41 84 EC 2F
|
||||
00C0 | 1D E5 D4 9D B6 2F 55 E2 DA 6E 21 57 DA 57 C5 0E
|
||||
00D0 | 83 B4 A0 8A 4A C2 08 3B CA E8 AB C6 00 04 A3 7F
|
||||
00E0 | A9 45 EF 09 51 DA 61 0A DC 0A 09 A4 F5 53 E7 63
|
||||
00F0 | 41 64 CB 02 90 A2 E6 63 8A C3 22 6D BE 3A 36 CC
|
||||
0100 | EC 26 32 08 DB 86 79 FB 1C 54 E1 82 BB DF BA B7
|
||||
0110 | 89 05 FE 95 A1 89 AC 0C 35 2C 63 75 1A F3 A8 ED
|
||||
0120 | 78 90 20 BE 4B CB 43 82 25 3C 4A D6 99 D7 CA CA
|
||||
0130 | 4E D9 34 B0 B8 24 4D 92 65 C4 DB 02 2E 54 60 7C
|
||||
0140 | 79 7A 3A AE 99 E1 0A 9F A2 D4 DB 77 31 AA BF E2
|
||||
0150 | 7A 77 9F CE 95 75 CB EB 8A F8 78 CC 65 4E 22 39
|
||||
0160 | 87 88 B9 35 F9 B8 4A FE 3E 5F 27 C3 BC 97 F5 0B
|
||||
0170 | F0 91 AB FD 26 16 3A F6 E8 66 15 B2 4B E1 47 E0
|
||||
0180 | 71 BB 4A D3 20 9F 9F B4 28 2D 4C 2B 9A D0 E6 2C
|
||||
0190 | 38 7E 38 7C B3 DB 16 42 26 A8 EC 09 08 63 E7 AD
|
||||
01A0 | 4C 9E 12 C0 DE 42 30 47 6C 07 7A 12 AE F0 89 63
|
||||
01B0 | 40 17 B7 0A 64 C7 C7 03 3D 99 1A 31 0B E8 14 36
|
||||
01C0 | 55 5D 95 AD A4 13 1A B5 FF 0A CB E3 E7 37 6C 94
|
||||
01D0 | 27 09 D3 CB 99 B8 85 2C 29 C5 EA EA AE 57 E0 49
|
||||
01E0 | D8 DA 4B 47 5F 3E 14 5F 5F 2B E8 27 8E 5C E0 7F
|
||||
01F0 | EA 7D CE 3A 31 15 80 17 72 68 F2 DB BB B2 CA F5
|
||||
0200 | 97 E8 35 EA 4C 36 18 C2 8D 80 2F B9 36 C0 90 28
|
||||
0210 | BF 0E 2D 2F 8E 5D C6 DE D3 96 AE BA 1C 88 51 E8
|
||||
0220 | 53 FF DD BD AE 1D D8 AB 52 21 24 05 34 F6 CD 6A
|
||||
0230 | 77 71 66 CF ED FC 56 13 D4 94 A6 29 BF F5 B1 B2
|
||||
0240 | A5 E0 14 66 7A 7C EB 5C 35 D9 EF DC BA 01 80 1D
|
||||
0250 | AD 84 41 F9 38 0A D7 4C 81 97 25 28 E8 8E 0C BE
|
||||
0260 | 35 4F 8D 29 6D F2 20 B4 8D 84 4F C4 03 D5 86 5B
|
||||
0270 | EC 7C A6 5F 5E 56 2B 81 C9 F1 67 8E 9F 9B 7F 7C
|
||||
0280 | 1B BD C5 AF 6E 2F AE D9 C8 A1 0D 4F</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 = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A95
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>0180935612C38E66</code></td>
|
||||
<td><code>016C367356899266</code></td>
|
||||
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() << 32) + (N*4)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>message_length</td>
|
||||
<td>16, 4</td>
|
||||
<td><code>C4020000</code> (708 in decimal)</td>
|
||||
<td><code>80020000</code> (640 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A95
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE500200A329EFBC49B779341702A9FE</code> <code>295A61F4BF7DCBAAE6A80963B78FD81D</code> <code>DC775218423595200D581FDE7E2E34C5</code> <code>EC225E16496768A6FCAA735A194B6760</code> <code>D67833EADC079EF77B8ACA9B98FE5C09</code> <code>03D7C3B04F626D18A4E85B8E5F001C16</code> <code>2DF5A150B0E3097851E2A9D805D4402B</code> <code>086C67E23F2D45263F185AC2D12F1004</code> <code>B763A6DD7559F709B9C610EA538FA4F1</code> <code>A3378A98E6A2E98C8FB24C16CDBC6DBB</code> <code>A6346340B519B8EB79E23CAC58CEA994</code> <code>7B78D0B5826CA8BDF09DDFD51D675539</code> <code>B461DD65D4A5B4E36C2B8730FF5F296A</code> <code>7198912C4A999999DBB51E38BAD0EFB2</code> <code>BA264BB68EB574621FE8A405FB0F0EAC</code> <code>25CA800126462D169DACB7D0052F16E2</code> <code>0C4FFB4D99EBF736F9D0AE7760E378AB</code> <code>035A02200662BFD87C883C4AF1D92516</code> <code>27AC2A2B02FED4220E841B3683B3B797</code> <code>2932962757A25F775DFBCCEC24BC0741</code> <code>947C6FCF31C85AD81299A5396EBAA04D</code> <code>4BE0AD1D47E92779B552FAC8A5677C4C</code> <code>3F48431F020A145163C0D25E297B03C7</code> <code>96CACE01A15E3AF209430BE5D0D8F8FA</code> <code>1E247AF0F34D5BA0271B088134BF60D9</code> <code>D8BAB8E31FD9A7C9EDB7DB4A1B20EADB</code> <code>24B53C0FB64B5EE83CC1E20E33D26B14</code> <code>9B8AC7DB0652A9E8038939D9867304ED</code> <code>71AB77231504EDF2C91D16CBA0FA42C9</code> <code>8920A99AADCFD18C11DB667E944FC58C</code> <code>7921EF52B42B5B3849E2D6B6A893EF77</code> <code>081E1B47097B6F85C478000D2116A428</code> <code>ED28412DFAE9D4F749A3057422BEBA43</code> <code>1E6EB53DAD27F62CF3CCAC4994BA5CEC</code> <code>9BFF895C397EA50479B7295EDBDEB1DD</code> <code>C4A4568F4EF81141775C02AABA6CA8F8</code> <code>2A58836750C9EC3137CB51E2457151DA</code><br> <code>4D56C699</code></td>
|
||||
<td><code>FE500200971C84900D5B8F74CB63379E</code> <code>33E1AECC744D248C9E20582B52BB1079</code> <code>6EE6818FEC260A79123104FDC70619DD</code> <code>EA97350155C476FE855CDA485A419BC7</code> <code>3E2E65716A97DF6814D543DC1B0E93FC</code> <code>62FF99C6567EC7E228FF147FF1C87962</code> <code>E67DA0339947005380E1673F9C71719A</code> <code>2C15DF9804E6637092A1E2A0A4DE9C7E</code> <code>BD4A79D64184EC2F1DE5D49DB62F55E2</code> <code>DA6E2157DA57C50E83B4A08A4AC2083B</code> <code>CAE8ABC60004A37FA945EF0951DA610A</code> <code>DC0A09A4F553E7634164CB0290A2E663</code> <code>8AC3226DBE3A36CCEC263208DB8679FB</code> <code>1C54E182BBDFBAB78905FE95A189AC0C</code> <code>352C63751AF3A8ED789020BE4BCB4382</code> <code>253C4AD699D7CACA4ED934B0B8244D92</code> <code>65C4DB022E54607C797A3AAE99E10A9F</code> <code>A2D4DB7731AABFE27A779FCE9575CBEB</code> <code>8AF878CC654E22398788B935F9B84AFE</code> <code>3E5F27C3BC97F50BF091ABFD26163AF6</code> <code>E86615B24BE147E071BB4AD3209F9FB4</code> <code>282D4C2B9AD0E62C387E387CB3DB1642</code> <code>26A8EC090863E7AD4C9E12C0DE423047</code> <code>6C077A12AEF089634017B70A64C7C703</code> <code>3D991A310BE81436555D95ADA4131AB5</code> <code>FF0ACBE3E7376C942709D3CB99B8852C</code> <code>29C5EAEAAE57E049D8DA4B475F3E145F</code> <code>5F2BE8278E5CE07FEA7DCE3A31158017</code> <code>7268F2DBBBB2CAF597E835EA4C3618C2</code> <code>8D802FB936C09028BF0E2D2F8E5DC6DE</code> <code>D396AEBA1C8851E853FFDDBDAE1DD8AB</code> <code>5221240534F6CD6A777166CFEDFC5613</code> <code>D494A629BFF5B1B2A5E014667A7CEB5C</code> <code>35D9EFDCBA01801DAD8441F9380AD74C</code> <code>81972528E88E0CBE354F8D296DF220B4</code> <code>8D844FC403D5865BEC7CA65F5E562B81</code> <code>C9F1678E9F9B7F7C1BBDC5AF6E2FAED9</code><br> <code>C8A10D4F</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = C9BEEF882B17F0720F51A13739DB830422DE0DDBD2877F96B77371A95
|
|||
<!-- 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 = A329EFBC49B779341702A9FE295A61F4BF7DCBAAE6A80963B78FD81DDC775218423595200D581FDE7E2E34C5EC225E16496768A6FCAA735A194B6760D67833EADC079EF77B8ACA9B98FE5C0903D7C3B04F626D18A4E85B8E5F001C162DF5A150B0E3097851E2A9D805D4402B086C67E23F2D45263F185AC2D12F1004B763A6DD7559F709B9C610EA538FA4F1A3378A98E6A2E98C8FB24C16CDBC6DBBA6346340B519B8EB79E23CAC58CEA9947B78D0B5826CA8BDF09DDFD51D675539B461DD65D4A5B4E36C2B8730FF5F296A7198912C4A999999DBB51E38BAD0EFB2BA264BB68EB574621FE8A405FB0F0EAC25CA800126462D169DACB7D0052F16E20C4FFB4D99EBF736F9D0AE7760E378AB035A02200662BFD87C883C4AF1D9251627AC2A2B02FED4220E841B3683B3B7972932962757A25F775DFBCCEC24BC0741947C6FCF31C85AD81299A5396EBAA04D4BE0AD1D47E92779B552FAC8A5677C4C3F48431F020A145163C0D25E297B03C796CACE01A15E3AF209430BE5D0D8F8FA1E247AF0F34D5BA0271B088134BF60D9D8BAB8E31FD9A7C9EDB7DB4A1B20EADB24B53C0FB64B5EE83CC1E20E33D26B149B8AC7DB0652A9E8038939D9867304ED71AB77231504EDF2C91D16CBA0FA42C98920A99AADCFD18C11DB667E944FC58C7921EF52B42B5B3849E2D6B6A893EF77081E1B47097B6F85C478000D2116A428ED28412DFAE9D4F749A3057422BEBA431E6EB53DAD27F62CF3CCAC4994BA5CEC9BFF895C397EA50479B7295EDBDEB1DDC4A4568F4EF81141775C02AABA6CA8F82A58836750C9EC3137CB51E2457151DA4D56C699
|
||||
tmp_aes_key = 04B5A4968B575D10DE68AA3665BC0161F5977FF3A3A7A00B1347A587C8D0C891
|
||||
tmp_aes_iv = A382CAB4CCCF1AC4F5BD9941D6D27EADD917CC3A43FC2D186ED2944041A6C493</code></pre>
|
||||
<pre><code>encrypted_answer = 971C84900D5B8F74CB63379E33E1AECC744D248C9E20582B52BB10796EE6818FEC260A79123104FDC70619DDEA97350155C476FE855CDA485A419BC73E2E65716A97DF6814D543DC1B0E93FC62FF99C6567EC7E228FF147FF1C87962E67DA0339947005380E1673F9C71719A2C15DF9804E6637092A1E2A0A4DE9C7EBD4A79D64184EC2F1DE5D49DB62F55E2DA6E2157DA57C50E83B4A08A4AC2083BCAE8ABC60004A37FA945EF0951DA610ADC0A09A4F553E7634164CB0290A2E6638AC3226DBE3A36CCEC263208DB8679FB1C54E182BBDFBAB78905FE95A189AC0C352C63751AF3A8ED789020BE4BCB4382253C4AD699D7CACA4ED934B0B8244D9265C4DB022E54607C797A3AAE99E10A9FA2D4DB7731AABFE27A779FCE9575CBEB8AF878CC654E22398788B935F9B84AFE3E5F27C3BC97F50BF091ABFD26163AF6E86615B24BE147E071BB4AD3209F9FB4282D4C2B9AD0E62C387E387CB3DB164226A8EC090863E7AD4C9E12C0DE4230476C077A12AEF089634017B70A64C7C7033D991A310BE81436555D95ADA4131AB5FF0ACBE3E7376C942709D3CB99B8852C29C5EAEAAE57E049D8DA4B475F3E145F5F2BE8278E5CE07FEA7DCE3A311580177268F2DBBBB2CAF597E835EA4C3618C28D802FB936C09028BF0E2D2F8E5DC6DED396AEBA1C8851E853FFDDBDAE1DD8AB5221240534F6CD6A777166CFEDFC5613D494A629BFF5B1B2A5E014667A7CEB5C35D9EFDCBA01801DAD8441F9380AD74C81972528E88E0CBE354F8D296DF220B48D844FC403D5865BEC7CA65F5E562B81C9F1678E9F9B7F7C1BBDC5AF6E2FAED9C8A10D4F
|
||||
tmp_aes_key = 0B78A8FFFA9DF8EB51C21002E1B2EBC36F7DD211CD0153AB95298528F5A56870
|
||||
tmp_aes_iv = C9BCF089C6327CFEB86807530A1F99B92248E8C1659368BF793710347193D80C</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 0ACA08569707428716F925F3545D0ACA40FE279CBA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100896399B2E036363A15927AC68EE5510FC23C99DF5A9087BD858D411F84CA62CF156187C2772C08AE969197B54DDDF5A07DA1879533D86B6AAB2348FD24B8C7655EBDED82C174119CCD33512CDA06B9F74EA32B749B3179A8221C8281C268AE549881E85417F27F16C470CACD49E18A485BF689CFB6EC56BED2C0C38D3828074F3AC93942DE78A684CFDD18B7BB1C2F18896167264F4F796796D18AC4BFA9B87AF02DC92572C0D85A81599E22F1568256D3F868E981B36DC8121C7971EAD892F09D6AB433E6CEA65195EDD69768B38886571E8DC0BC17B082726333CAF72A146338EC3E883CE7369DAB10E1D7794A44886C322602AAADF4641DB9BD8E9574E9B612C38E66EF45EF7BC7AF449B
|
||||
answer = BA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF503000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100896399B2E036363A15927AC68EE5510FC23C99DF5A9087BD858D411F84CA62CF156187C2772C08AE969197B54DDDF5A07DA1879533D86B6AAB2348FD24B8C7655EBDED82C174119CCD33512CDA06B9F74EA32B749B3179A8221C8281C268AE549881E85417F27F16C470CACD49E18A485BF689CFB6EC56BED2C0C38D3828074F3AC93942DE78A684CFDD18B7BB1C2F18896167264F4F796796D18AC4BFA9B87AF02DC92572C0D85A81599E22F1568256D3F868E981B36DC8121C7971EAD892F09D6AB433E6CEA65195EDD69768B38886571E8DC0BC17B082726333CAF72A146338EC3E883CE7369DAB10E1D7794A44886C322602AAADF4641DB9BD8E9574E9B612C38E66EF45EF7BC7AF449B</code></pre>
|
||||
<pre><code>answer_with_hash = 830B0BC7FFD6913023162DE5171C716029BCE767BA0D89B589FB777C8C42407D30CB64E107484779CFCEB241BE2A24102B70B47FDFCF82A103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010080EA09C18969A018BD7E16D7526FA674638EA13EBA011E2949177008769CC6F8B085E78A2B504B11A8509140570141ADBE3ECA169CAF7AEAD03A6C0068D6371E46F4701862EF1DC7F9439FD67541609DC098BA40FC6737DC2CCA80C878E6DE03AAC041C99AFFE447107F13B8D6880A21587C33501BAFEAA376764365E30B91ED9A90BD8C1BFB163D98721101DC117906561FEFC9555C2BEAA4812CD2318EB25451A4C71D8C86D60B8B962949914E3868C3917F78C28175E8530CA30A4F12C2234CED17E0686094CF53180E9DD292D9E5E9A3A8809A7921B12F22EB2368709015F14CB72C8EEB6CBBC2412737B406BEF36C5B9ED114EC34CBE2E8172EDC85912D568992665158C25E3AE57165
|
||||
answer = BA0D89B589FB777C8C42407D30CB64E107484779CFCEB241BE2A24102B70B47FDFCF82A103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010080EA09C18969A018BD7E16D7526FA674638EA13EBA011E2949177008769CC6F8B085E78A2B504B11A8509140570141ADBE3ECA169CAF7AEAD03A6C0068D6371E46F4701862EF1DC7F9439FD67541609DC098BA40FC6737DC2CCA80C878E6DE03AAC041C99AFFE447107F13B8D6880A21587C33501BAFEAA376764365E30B91ED9A90BD8C1BFB163D98721101DC117906561FEFC9555C2BEAA4812CD2318EB25451A4C71D8C86D60B8B962949914E3868C3917F78C28175E8530CA30A4F12C2234CED17E0686094CF53180E9DD292D9E5E9A3A8809A7921B12F22EB2368709015F14CB72C8EEB6CBBC2412737B406BEF36C5B9ED114EC34CBE2E8172EDC85912D568992665158C25E3AE57165</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 72 FA 62 CB 49 68 CB AD 5C 60 5D E6
|
||||
0010 | 59 FE FD 0B 5B D3 A1 EF 21 35 54 40 23 2B DA 93
|
||||
0020 | B7 8E 9F F5 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 89 FB 77 7C 8C 42 40 7D 30 CB 64 E1
|
||||
0010 | 07 48 47 79 CF CE B2 41 BE 2A 24 10 2B 70 B4 7F
|
||||
0020 | DF CF 82 A1 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 = BA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF
|
|||
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 | 89 63 99 B2 E0 36 36 3A 15 92 7A C6 8E E5 51 0F
|
||||
0140 | C2 3C 99 DF 5A 90 87 BD 85 8D 41 1F 84 CA 62 CF
|
||||
0150 | 15 61 87 C2 77 2C 08 AE 96 91 97 B5 4D DD F5 A0
|
||||
0160 | 7D A1 87 95 33 D8 6B 6A AB 23 48 FD 24 B8 C7 65
|
||||
0170 | 5E BD ED 82 C1 74 11 9C CD 33 51 2C DA 06 B9 F7
|
||||
0180 | 4E A3 2B 74 9B 31 79 A8 22 1C 82 81 C2 68 AE 54
|
||||
0190 | 98 81 E8 54 17 F2 7F 16 C4 70 CA CD 49 E1 8A 48
|
||||
01A0 | 5B F6 89 CF B6 EC 56 BE D2 C0 C3 8D 38 28 07 4F
|
||||
01B0 | 3A C9 39 42 DE 78 A6 84 CF DD 18 B7 BB 1C 2F 18
|
||||
01C0 | 89 61 67 26 4F 4F 79 67 96 D1 8A C4 BF A9 B8 7A
|
||||
01D0 | F0 2D C9 25 72 C0 D8 5A 81 59 9E 22 F1 56 82 56
|
||||
01E0 | D3 F8 68 E9 81 B3 6D C8 12 1C 79 71 EA D8 92 F0
|
||||
01F0 | 9D 6A B4 33 E6 CE A6 51 95 ED D6 97 68 B3 88 86
|
||||
0200 | 57 1E 8D C0 BC 17 B0 82 72 63 33 CA F7 2A 14 63
|
||||
0210 | 38 EC 3E 88 3C E7 36 9D AB 10 E1 D7 79 4A 44 88
|
||||
0220 | 6C 32 26 02 AA AD F4 64 1D B9 BD 8E 95 74 E9 B6
|
||||
0230 | 12 C3 8E 66</code></pre>
|
||||
0130 | 80 EA 09 C1 89 69 A0 18 BD 7E 16 D7 52 6F A6 74
|
||||
0140 | 63 8E A1 3E BA 01 1E 29 49 17 70 08 76 9C C6 F8
|
||||
0150 | B0 85 E7 8A 2B 50 4B 11 A8 50 91 40 57 01 41 AD
|
||||
0160 | BE 3E CA 16 9C AF 7A EA D0 3A 6C 00 68 D6 37 1E
|
||||
0170 | 46 F4 70 18 62 EF 1D C7 F9 43 9F D6 75 41 60 9D
|
||||
0180 | C0 98 BA 40 FC 67 37 DC 2C CA 80 C8 78 E6 DE 03
|
||||
0190 | AA C0 41 C9 9A FF E4 47 10 7F 13 B8 D6 88 0A 21
|
||||
01A0 | 58 7C 33 50 1B AF EA A3 76 76 43 65 E3 0B 91 ED
|
||||
01B0 | 9A 90 BD 8C 1B FB 16 3D 98 72 11 01 DC 11 79 06
|
||||
01C0 | 56 1F EF C9 55 5C 2B EA A4 81 2C D2 31 8E B2 54
|
||||
01D0 | 51 A4 C7 1D 8C 86 D6 0B 8B 96 29 49 91 4E 38 68
|
||||
01E0 | C3 91 7F 78 C2 81 75 E8 53 0C A3 0A 4F 12 C2 23
|
||||
01F0 | 4C ED 17 E0 68 60 94 CF 53 18 0E 9D D2 92 D9 E5
|
||||
0200 | E9 A3 A8 80 9A 79 21 B1 2F 22 EB 23 68 70 90 15
|
||||
0210 | F1 4C B7 2C 8E EB 6C BB C2 41 27 37 B4 06 BE F3
|
||||
0220 | 6C 5B 9E D1 14 EC 34 CB E2 E8 17 2E DC 85 91 2D
|
||||
0230 | 56 89 92 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 = BA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE000100896399B2E036363A15927AC6</code> <code>8EE5510FC23C99DF5A9087BD858D411F</code> <code>84CA62CF156187C2772C08AE969197B5</code> <code>4DDDF5A07DA1879533D86B6AAB2348FD</code> <code>24B8C7655EBDED82C174119CCD33512C</code> <code>DA06B9F74EA32B749B3179A8221C8281</code> <code>C268AE549881E85417F27F16C470CACD</code> <code>49E18A485BF689CFB6EC56BED2C0C38D</code> <code>3828074F3AC93942DE78A684CFDD18B7</code> <code>BB1C2F18896167264F4F796796D18AC4</code> <code>BFA9B87AF02DC92572C0D85A81599E22</code> <code>F1568256D3F868E981B36DC8121C7971</code> <code>EAD892F09D6AB433E6CEA65195EDD697</code> <code>68B38886571E8DC0BC17B082726333CA</code> <code>F72A146338EC3E883CE7369DAB10E1D7</code> <code>794A44886C322602AAADF4641DB9BD8E</code><br> <code>9574E9B6</code></td>
|
||||
<td><code>FE00010080EA09C18969A018BD7E16D7</code> <code>526FA674638EA13EBA011E2949177008</code> <code>769CC6F8B085E78A2B504B11A8509140</code> <code>570141ADBE3ECA169CAF7AEAD03A6C00</code> <code>68D6371E46F4701862EF1DC7F9439FD6</code> <code>7541609DC098BA40FC6737DC2CCA80C8</code> <code>78E6DE03AAC041C99AFFE447107F13B8</code> <code>D6880A21587C33501BAFEAA376764365</code> <code>E30B91ED9A90BD8C1BFB163D98721101</code> <code>DC117906561FEFC9555C2BEAA4812CD2</code> <code>318EB25451A4C71D8C86D60B8B962949</code> <code>914E3868C3917F78C28175E8530CA30A</code> <code>4F12C2234CED17E0686094CF53180E9D</code> <code>D292D9E5E9A3A8809A7921B12F22EB23</code> <code>68709015F14CB72C8EEB6CBBC2412737</code> <code>B406BEF36C5B9ED114EC34CBE2E8172E</code><br> <code>DC85912D</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>12C38E66</code> (1720632082 in decimal)</td>
|
||||
<td><code>56899266</code> (1720879446 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF
|
|||
<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 = 1DB9861FA37E2D6BCAF72529BDF744170873FA2A9C4A64AE82D1BBF7F44D598B88681A9A8893B4970302340AAB2D06E392D7CF821788BFEC4321E8B79817194DB79FBA82622A043F3F25EB7B2668B9505312782C03C80A86C349B6F120F47F74902792195DC9429DF1E5342E997AA69412EC3EA52B97F86DAAC0E5291242D9A042A621751A38D33F42630DBE5760149BCF0C8A7B864B18340F75C7E1484B5E547F14704305A003D8853353721F1026CE4B7E85EF484EBA7F8130E00B3C3D49DE5AEDAD5EBA01DD2EEE46694584CD1CBAC68C589ECFE0E307258FD42191E89DD8E9EEFE34A57BBA224B834786CCF0E20DF52A6613C51277D89C41992BEE552CB2</code></pre>
|
||||
<pre><code>b = 2C967D389A9DC0FFD5E5AF86F53025F672F9058EFD8DB8BD4B6F08675B41291503221553014520A39BC417524C15E5CE36BED97629E141CB12B42A22AF434865257C82004544919B7E42B980D8058FEB3C938D9D972D020C02FED6F0154D3A5E9508789ECC8A23E2782E62936518EBFE1694DCB44F115A9C118C94E29E1427461275A0853F72D26282A35D37E13BDE26926170B39ADD28795FCD8A82B74CC2B48374679C2676E48EDEAA44E95CB25CD55FE4897C0867C42D657D0BF5BB56509E51995A3D452761B9892B19B09A35E5540DD90613E238AAC7C0EB7E43DA766CD19244906EB188959F5CF9B9DCB5D584B7C706ADC4943C0EF23B9A5BBBD6BD4A91</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 = 8DAD543C4D4D095227F57D8BFD1361895A03CDBCD161C57B82946E1F4B22D02D1008AB827BA8E8E11D989BFD60254C49303C0F90C12194D7B8FE2B3546A94AE85365358D6C0909C6CD2E6B6600FB68CDB01099D0C72DBEAA8BF4A790FA500B4FE2ADC5752FE57722FD095A037544818112AF5762E380E9B475EA4614115347D8A6E43D4686BA6C08C7CC898E6C90722BBBF85F4FC1872FC46D6E90AA7E06789042D871F8587A5C0A1FE1B8B3B9F1A9CA4A0BAAFE1B4F23951152EE0FFF2EF4158DCF1D8DA1ECEEBFF8ED6735BF1A2F5A1E466E2456A8B636B0D7B5CC8D9A126272842D6E112372E24C9A4D936A820132843D2022962B2B57DCC437C52EF96CFC</code></pre>
|
||||
<pre><code>g_b = 5D5AAD010D5FC12D7E96AEB202658D19A283038686D85355590C215354386F5CE698BB43A0892D41F0C165C8AED2918C56B5533E20EEE13DF95A02D173303FCCEA845FB41AC08EE3D7666481F9A51A7655A422D10556E55D1C61EF00E17D1F04AF9D6617D8A9F6787108128FBC924D2C313B88CC560B32B4E0DD6553B54117FB877381D5C982B47C4C449FF05ABF587526A653BB671D4B4A944398ADEF1C87894A1718199897869F1E68A2F05F79577F3DC8C7502F54E6555426A465D5B3F83B6FB4E03831BE7675B0E93B1B9587885826DCB7C67A9530D29161CA4F2042F51369375F3A5B8092EC2D7FDACEA57B93F6CD9666FCFE0FAD8EE5E5CA4C8D8BB04C</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 72 FA 62 CB 49 68 CB AD 5C 60 5D E6
|
||||
0010 | 59 FE FD 0B 5B D3 A1 EF 21 35 54 40 23 2B DA 93
|
||||
0020 | B7 8E 9F F5 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 8D AD 54 3C 4D 4D 09 52 27 F5 7D 8B FD 13 61 89
|
||||
0040 | 5A 03 CD BC D1 61 C5 7B 82 94 6E 1F 4B 22 D0 2D
|
||||
0050 | 10 08 AB 82 7B A8 E8 E1 1D 98 9B FD 60 25 4C 49
|
||||
0060 | 30 3C 0F 90 C1 21 94 D7 B8 FE 2B 35 46 A9 4A E8
|
||||
0070 | 53 65 35 8D 6C 09 09 C6 CD 2E 6B 66 00 FB 68 CD
|
||||
0080 | B0 10 99 D0 C7 2D BE AA 8B F4 A7 90 FA 50 0B 4F
|
||||
0090 | E2 AD C5 75 2F E5 77 22 FD 09 5A 03 75 44 81 81
|
||||
00A0 | 12 AF 57 62 E3 80 E9 B4 75 EA 46 14 11 53 47 D8
|
||||
00B0 | A6 E4 3D 46 86 BA 6C 08 C7 CC 89 8E 6C 90 72 2B
|
||||
00C0 | BB F8 5F 4F C1 87 2F C4 6D 6E 90 AA 7E 06 78 90
|
||||
00D0 | 42 D8 71 F8 58 7A 5C 0A 1F E1 B8 B3 B9 F1 A9 CA
|
||||
00E0 | 4A 0B AA FE 1B 4F 23 95 11 52 EE 0F FF 2E F4 15
|
||||
00F0 | 8D CF 1D 8D A1 EC EE BF F8 ED 67 35 BF 1A 2F 5A
|
||||
0100 | 1E 46 6E 24 56 A8 B6 36 B0 D7 B5 CC 8D 9A 12 62
|
||||
0110 | 72 84 2D 6E 11 23 72 E2 4C 9A 4D 93 6A 82 01 32
|
||||
0120 | 84 3D 20 22 96 2B 2B 57 DC C4 37 C5 2E F9 6C FC</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 89 FB 77 7C 8C 42 40 7D 30 CB 64 E1
|
||||
0010 | 07 48 47 79 CF CE B2 41 BE 2A 24 10 2B 70 B4 7F
|
||||
0020 | DF CF 82 A1 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 5D 5A AD 01 0D 5F C1 2D 7E 96 AE B2 02 65 8D 19
|
||||
0040 | A2 83 03 86 86 D8 53 55 59 0C 21 53 54 38 6F 5C
|
||||
0050 | E6 98 BB 43 A0 89 2D 41 F0 C1 65 C8 AE D2 91 8C
|
||||
0060 | 56 B5 53 3E 20 EE E1 3D F9 5A 02 D1 73 30 3F CC
|
||||
0070 | EA 84 5F B4 1A C0 8E E3 D7 66 64 81 F9 A5 1A 76
|
||||
0080 | 55 A4 22 D1 05 56 E5 5D 1C 61 EF 00 E1 7D 1F 04
|
||||
0090 | AF 9D 66 17 D8 A9 F6 78 71 08 12 8F BC 92 4D 2C
|
||||
00A0 | 31 3B 88 CC 56 0B 32 B4 E0 DD 65 53 B5 41 17 FB
|
||||
00B0 | 87 73 81 D5 C9 82 B4 7C 4C 44 9F F0 5A BF 58 75
|
||||
00C0 | 26 A6 53 BB 67 1D 4B 4A 94 43 98 AD EF 1C 87 89
|
||||
00D0 | 4A 17 18 19 98 97 86 9F 1E 68 A2 F0 5F 79 57 7F
|
||||
00E0 | 3D C8 C7 50 2F 54 E6 55 54 26 A4 65 D5 B3 F8 3B
|
||||
00F0 | 6F B4 E0 38 31 BE 76 75 B0 E9 3B 1B 95 87 88 58
|
||||
0100 | 26 DC B7 C6 7A 95 30 D2 91 61 CA 4F 20 42 F5 13
|
||||
0110 | 69 37 5F 3A 5B 80 92 EC 2D 7F DA CE A5 7B 93 F6
|
||||
0120 | CD 96 66 FC FE 0F AD 8E E5 E5 CA 4C 8D 8B B0 4C</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 = BA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001008DAD543C4D4D095227F57D8B</code> <code>FD1361895A03CDBCD161C57B82946E1F</code> <code>4B22D02D1008AB827BA8E8E11D989BFD</code> <code>60254C49303C0F90C12194D7B8FE2B35</code> <code>46A94AE85365358D6C0909C6CD2E6B66</code> <code>00FB68CDB01099D0C72DBEAA8BF4A790</code> <code>FA500B4FE2ADC5752FE57722FD095A03</code> <code>7544818112AF5762E380E9B475EA4614</code> <code>115347D8A6E43D4686BA6C08C7CC898E</code> <code>6C90722BBBF85F4FC1872FC46D6E90AA</code> <code>7E06789042D871F8587A5C0A1FE1B8B3</code> <code>B9F1A9CA4A0BAAFE1B4F23951152EE0F</code> <code>FF2EF4158DCF1D8DA1ECEEBFF8ED6735</code> <code>BF1A2F5A1E466E2456A8B636B0D7B5CC</code> <code>8D9A126272842D6E112372E24C9A4D93</code> <code>6A820132843D2022962B2B57DCC437C5</code><br> <code>2EF96CFC</code></td>
|
||||
<td><code>FE0001005D5AAD010D5FC12D7E96AEB2</code> <code>02658D19A283038686D85355590C2153</code> <code>54386F5CE698BB43A0892D41F0C165C8</code> <code>AED2918C56B5533E20EEE13DF95A02D1</code> <code>73303FCCEA845FB41AC08EE3D7666481</code> <code>F9A51A7655A422D10556E55D1C61EF00</code> <code>E17D1F04AF9D6617D8A9F6787108128F</code> <code>BC924D2C313B88CC560B32B4E0DD6553</code> <code>B54117FB877381D5C982B47C4C449FF0</code> <code>5ABF587526A653BB671D4B4A944398AD</code> <code>EF1C87894A1718199897869F1E68A2F0</code> <code>5F79577F3DC8C7502F54E6555426A465</code> <code>D5B3F83B6FB4E03831BE7675B0E93B1B</code> <code>9587885826DCB7C67A9530D29161CA4F</code> <code>2042F51369375F3A5B8092EC2D7FDACE</code> <code>A57B93F6CD9666FCFE0FAD8EE5E5CA4C</code><br> <code>8D8BB04C</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 = BA0D89B572FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF
|
|||
<!-- 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 = 54B6436672FA62CB4968CBAD5C605DE659FEFD0B5BD3A1EF21355440232BDA93B78E9FF50000000000000000FE0001008DAD543C4D4D095227F57D8BFD1361895A03CDBCD161C57B82946E1F4B22D02D1008AB827BA8E8E11D989BFD60254C49303C0F90C12194D7B8FE2B3546A94AE85365358D6C0909C6CD2E6B6600FB68CDB01099D0C72DBEAA8BF4A790FA500B4FE2ADC5752FE57722FD095A037544818112AF5762E380E9B475EA4614115347D8A6E43D4686BA6C08C7CC898E6C90722BBBF85F4FC1872FC46D6E90AA7E06789042D871F8587A5C0A1FE1B8B3B9F1A9CA4A0BAAFE1B4F23951152EE0FFF2EF4158DCF1D8DA1ECEEBFF8ED6735BF1A2F5A1E466E2456A8B636B0D7B5CC8D9A126272842D6E112372E24C9A4D936A820132843D2022962B2B57DCC437C52EF96CFC
|
||||
padding = 23CC399548223E55562938E2
|
||||
tmp_aes_key = 04B5A4968B575D10DE68AA3665BC0161F5977FF3A3A7A00B1347A587C8D0C891
|
||||
tmp_aes_iv = A382CAB4CCCF1AC4F5BD9941D6D27EADD917CC3A43FC2D186ED2944041A6C493</code></pre>
|
||||
<pre><code>data = 54B6436689FB777C8C42407D30CB64E107484779CFCEB241BE2A24102B70B47FDFCF82A10000000000000000FE0001005D5AAD010D5FC12D7E96AEB202658D19A283038686D85355590C215354386F5CE698BB43A0892D41F0C165C8AED2918C56B5533E20EEE13DF95A02D173303FCCEA845FB41AC08EE3D7666481F9A51A7655A422D10556E55D1C61EF00E17D1F04AF9D6617D8A9F6787108128FBC924D2C313B88CC560B32B4E0DD6553B54117FB877381D5C982B47C4C449FF05ABF587526A653BB671D4B4A944398ADEF1C87894A1718199897869F1E68A2F05F79577F3DC8C7502F54E6555426A465D5B3F83B6FB4E03831BE7675B0E93B1B9587885826DCB7C67A9530D29161CA4F2042F51369375F3A5B8092EC2D7FDACEA57B93F6CD9666FCFE0FAD8EE5E5CA4C8D8BB04C
|
||||
padding = 5DCDFC1FF9AE84B97B04863C
|
||||
tmp_aes_key = 0B78A8FFFA9DF8EB51C21002E1B2EBC36F7DD211CD0153AB95298528F5A56870
|
||||
tmp_aes_iv = C9BCF089C6327CFEB86807530A1F99B92248E8C1659368BF793710347193D80C</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 = C4111D71253AA92A81C45F99AFBAFAA85742BE1288CAAC61C08644C554DA7F823B655B3366FA8C3E93D71578037A1E9ACDC21DD6662CF1756163FF41DB76EA67C1D586675C4D76C025E11301BB6BAD972E2B016E0BAF736CA21E598DEAF044A899720D353F7790C821B8A654D3DD9ACE1839E4B2052820AC86FA6414D7F77FFACB3D8020902033DA6A33D94BEF24E903D6E2F6932A5E02A7220061DAF92C1405F1B2D0BEC2DBB908CCDB85C747A7EF2CFB7154D23D2A2EAB8BB8B9D0EF7CBBC8714283293385C945D7376DAA52E2A30B532419DC3C0B6FBD608716F69858EB624EC40AC70E3EC25D13981FD191D8350FF1A78E67C9B65F8337005FB816402AA86FBC5C6A8A95E2DCA47961BCDB28C22926760C06FEECE3F86D40ED730F9997BB2B73078C5EBB7E4F72DBB917697BD6D61D658540564EFD3F837320A26663DB8FB194B944C2188667FBB2408C10C7F107</code></pre>
|
||||
<pre><code>encrypted_data = C690E8F62D1534D9E763F9D39D62DED16A30C94170FEDA3DB489672D3A5B6A38278184B15A3E2D1BA8BF1E11762B0110F99782B9866015071342B380B1BFCF36B09C965005E2B8D376576EB9D499664B9BF00EB81DCD15BB17F81C516EB08B7421E5F020C42110B28263C579FC5230DBAF33DF912D2A1E1166C1F4AFB6C6A1502B666FF4171D42877520764D6F1181F0FCBE1B5FD56EF8134024714AA0C029EC66C44EA1EE91B17894F62FE8A1271A1697C7B3F73AD17D7B60DBB95401BCF1FEC8B31218B7F47319838CECDE703550CCA22E9CBCBFCE355B04A3C8788C14F3B767B191D0B59984E8CAB1C9456A923271900CB52F5F586A4C47216BDB48097C7E528272684A45C46DE7B9D11ADF86897E883D025A4F0240AD3545544904F594FE0E4F2C3E66944BB53CE819D076C79C3F586E85E49932D38F36681F90BBEABDF87CDB61A6E5BDD7BF33E03D5C5F8D886E</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 4C FD 00 00 12 C3 8E 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 72 FA 62 CB 49 68 CB AD
|
||||
0020 | 5C 60 5D E6 59 FE FD 0B 5B D3 A1 EF 21 35 54 40
|
||||
0030 | 23 2B DA 93 B7 8E 9F F5 FE 50 01 00 C4 11 1D 71
|
||||
0040 | 25 3A A9 2A 81 C4 5F 99 AF BA FA A8 57 42 BE 12
|
||||
0050 | 88 CA AC 61 C0 86 44 C5 54 DA 7F 82 3B 65 5B 33
|
||||
0060 | 66 FA 8C 3E 93 D7 15 78 03 7A 1E 9A CD C2 1D D6
|
||||
0070 | 66 2C F1 75 61 63 FF 41 DB 76 EA 67 C1 D5 86 67
|
||||
0080 | 5C 4D 76 C0 25 E1 13 01 BB 6B AD 97 2E 2B 01 6E
|
||||
0090 | 0B AF 73 6C A2 1E 59 8D EA F0 44 A8 99 72 0D 35
|
||||
00A0 | 3F 77 90 C8 21 B8 A6 54 D3 DD 9A CE 18 39 E4 B2
|
||||
00B0 | 05 28 20 AC 86 FA 64 14 D7 F7 7F FA CB 3D 80 20
|
||||
00C0 | 90 20 33 DA 6A 33 D9 4B EF 24 E9 03 D6 E2 F6 93
|
||||
00D0 | 2A 5E 02 A7 22 00 61 DA F9 2C 14 05 F1 B2 D0 BE
|
||||
00E0 | C2 DB B9 08 CC DB 85 C7 47 A7 EF 2C FB 71 54 D2
|
||||
00F0 | 3D 2A 2E AB 8B B8 B9 D0 EF 7C BB C8 71 42 83 29
|
||||
0100 | 33 85 C9 45 D7 37 6D AA 52 E2 A3 0B 53 24 19 DC
|
||||
0110 | 3C 0B 6F BD 60 87 16 F6 98 58 EB 62 4E C4 0A C7
|
||||
0120 | 0E 3E C2 5D 13 98 1F D1 91 D8 35 0F F1 A7 8E 67
|
||||
0130 | C9 B6 5F 83 37 00 5F B8 16 40 2A A8 6F BC 5C 6A
|
||||
0140 | 8A 95 E2 DC A4 79 61 BC DB 28 C2 29 26 76 0C 06
|
||||
0150 | FE EC E3 F8 6D 40 ED 73 0F 99 97 BB 2B 73 07 8C
|
||||
0160 | 5E BB 7E 4F 72 DB B9 17 69 7B D6 D6 1D 65 85 40
|
||||
0170 | 56 4E FD 3F 83 73 20 A2 66 63 DB 8F B1 94 B9 44
|
||||
0180 | C2 18 86 67 FB B2 40 8C 10 C7 F1 07</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 40 7D 08 00 56 89 92 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 89 FB 77 7C 8C 42 40 7D
|
||||
0020 | 30 CB 64 E1 07 48 47 79 CF CE B2 41 BE 2A 24 10
|
||||
0030 | 2B 70 B4 7F DF CF 82 A1 FE 50 01 00 C6 90 E8 F6
|
||||
0040 | 2D 15 34 D9 E7 63 F9 D3 9D 62 DE D1 6A 30 C9 41
|
||||
0050 | 70 FE DA 3D B4 89 67 2D 3A 5B 6A 38 27 81 84 B1
|
||||
0060 | 5A 3E 2D 1B A8 BF 1E 11 76 2B 01 10 F9 97 82 B9
|
||||
0070 | 86 60 15 07 13 42 B3 80 B1 BF CF 36 B0 9C 96 50
|
||||
0080 | 05 E2 B8 D3 76 57 6E B9 D4 99 66 4B 9B F0 0E B8
|
||||
0090 | 1D CD 15 BB 17 F8 1C 51 6E B0 8B 74 21 E5 F0 20
|
||||
00A0 | C4 21 10 B2 82 63 C5 79 FC 52 30 DB AF 33 DF 91
|
||||
00B0 | 2D 2A 1E 11 66 C1 F4 AF B6 C6 A1 50 2B 66 6F F4
|
||||
00C0 | 17 1D 42 87 75 20 76 4D 6F 11 81 F0 FC BE 1B 5F
|
||||
00D0 | D5 6E F8 13 40 24 71 4A A0 C0 29 EC 66 C4 4E A1
|
||||
00E0 | EE 91 B1 78 94 F6 2F E8 A1 27 1A 16 97 C7 B3 F7
|
||||
00F0 | 3A D1 7D 7B 60 DB B9 54 01 BC F1 FE C8 B3 12 18
|
||||
0100 | B7 F4 73 19 83 8C EC DE 70 35 50 CC A2 2E 9C BC
|
||||
0110 | BF CE 35 5B 04 A3 C8 78 8C 14 F3 B7 67 B1 91 D0
|
||||
0120 | B5 99 84 E8 CA B1 C9 45 6A 92 32 71 90 0C B5 2F
|
||||
0130 | 5F 58 6A 4C 47 21 6B DB 48 09 7C 7E 52 82 72 68
|
||||
0140 | 4A 45 C4 6D E7 B9 D1 1A DF 86 89 7E 88 3D 02 5A
|
||||
0150 | 4F 02 40 AD 35 45 54 49 04 F5 94 FE 0E 4F 2C 3E
|
||||
0160 | 66 94 4B B5 3C E8 19 D0 76 C7 9C 3F 58 6E 85 E4
|
||||
0170 | 99 32 D3 8F 36 68 1F 90 BB EA BD F8 7C DB 61 A6
|
||||
0180 | E5 BD D7 BF 33 E0 3D 5C 5F 8D 88 6E</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>4CFD000012C38E66</code></td>
|
||||
<td><code>407D080056899266</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>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100C4111D71253AA92A81C45F99</code> <code>AFBAFAA85742BE1288CAAC61C08644C5</code> <code>54DA7F823B655B3366FA8C3E93D71578</code> <code>037A1E9ACDC21DD6662CF1756163FF41</code> <code>DB76EA67C1D586675C4D76C025E11301</code> <code>BB6BAD972E2B016E0BAF736CA21E598D</code> <code>EAF044A899720D353F7790C821B8A654</code> <code>D3DD9ACE1839E4B2052820AC86FA6414</code> <code>D7F77FFACB3D8020902033DA6A33D94B</code> <code>EF24E903D6E2F6932A5E02A7220061DA</code> <code>F92C1405F1B2D0BEC2DBB908CCDB85C7</code> <code>47A7EF2CFB7154D23D2A2EAB8BB8B9D0</code> <code>EF7CBBC8714283293385C945D7376DAA</code> <code>52E2A30B532419DC3C0B6FBD608716F6</code> <code>9858EB624EC40AC70E3EC25D13981FD1</code> <code>91D8350FF1A78E67C9B65F8337005FB8</code> <code>16402AA86FBC5C6A8A95E2DCA47961BC</code> <code>DB28C22926760C06FEECE3F86D40ED73</code> <code>0F9997BB2B73078C5EBB7E4F72DBB917</code> <code>697BD6D61D658540564EFD3F837320A2</code> <code>6663DB8FB194B944C2188667FBB2408C</code><br> <code>10C7F107</code></td>
|
||||
<td><code>FE500100C690E8F62D1534D9E763F9D3</code> <code>9D62DED16A30C94170FEDA3DB489672D</code> <code>3A5B6A38278184B15A3E2D1BA8BF1E11</code> <code>762B0110F99782B9866015071342B380</code> <code>B1BFCF36B09C965005E2B8D376576EB9</code> <code>D499664B9BF00EB81DCD15BB17F81C51</code> <code>6EB08B7421E5F020C42110B28263C579</code> <code>FC5230DBAF33DF912D2A1E1166C1F4AF</code> <code>B6C6A1502B666FF4171D42877520764D</code> <code>6F1181F0FCBE1B5FD56EF8134024714A</code> <code>A0C029EC66C44EA1EE91B17894F62FE8</code> <code>A1271A1697C7B3F73AD17D7B60DBB954</code> <code>01BCF1FEC8B31218B7F47319838CECDE</code> <code>703550CCA22E9CBCBFCE355B04A3C878</code> <code>8C14F3B767B191D0B59984E8CAB1C945</code> <code>6A923271900CB52F5F586A4C47216BDB</code> <code>48097C7E528272684A45C46DE7B9D11A</code> <code>DF86897E883D025A4F0240AD35455449</code> <code>04F594FE0E4F2C3E66944BB53CE819D0</code> <code>76C79C3F586E85E49932D38F36681F90</code> <code>BBEABDF87CDB61A6E5BDD7BF33E03D5C</code><br> <code>5F8D886E</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 = BBC22D10436763F95BC957809BFC139CA94470E5F03FE708D665670EBF3D9774B105F0B0DA45627917A4C865F89A2A517D9988DD103EB4AEB3FA8E06051E6484C9B054F36CB4EC135A0968A0894365F8A6324EA467E28B94B6D433667443D5FE40E7A8FC4DFAB1251D6748F89FA028F09C42344D9B713D736F81BB12493AA7E13A833BF2EFB45791286DEC78F4C0523C5E0BFCF04EFF73E6BC1CAB905CB550FA8C9EE67449C721BC8BFB4B5627FF68B858D5FF3FF944FB91952D9B94328ED0D7A5298E5512C706B7665264FE715996B48F95C70F680BAB670C7E3024764D2148B180171F3F2A1A396A01A05CE4C342EA171C3D5BE123B59D6FDD19B872148D8B</code></pre>
|
||||
<pre><code>auth_key = 1F20F0C978261ABA5ACCABC0A9A47072C0FA3CA7E9A4B85D7C0D6A3801DA7AFCC1B497BA74EF3E90B59824CB3A03647AA6285BCB347CE972B519DC1C10F9C14EAAE4F240A00CBAD279007C476A207E1FE157AE36303B20A676950805212017F1F10721D54ADB9CBAF8D2E6B41B7CD630668F702D18238C6929F9936930E2094898B2ED9272CE69B49332BB3CEA82B735C2ECB3489191E20662DB8586380C6803C70A6DF2A15A2BD3C4A1CA46B66DA6F0A9753ADEFA958F2F5DB55D8F1699848FE8BE422DE08CA5B49A56E4BEE2BA6BF5CC9D14F8B25DD09C7A941BCFDA2835837971C4274245EC827A77DA8D8489940580DC72683E09F9D424E9D56406BFA7B8</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 EC 58 15 13 C3 8E 66
|
||||
0010 | 64 00 00 00 34 F7 CB 3B 72 FA 62 CB 49 68 CB AD
|
||||
0020 | 5C 60 5D E6 59 FE FD 0B 5B D3 A1 EF 21 35 54 40
|
||||
0030 | 23 2B DA 93 B7 8E 9F F5 63 FB FE 09 A6 16 1A 54
|
||||
0040 | D7 57 05 1E E0 D0 C0 9A</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 CC 67 37 57 89 92 66
|
||||
0010 | 48 00 00 00 34 F7 CB 3B 89 FB 77 7C 8C 42 40 7D
|
||||
0020 | 30 CB 64 E1 07 48 47 79 CF CE B2 41 BE 2A 24 10
|
||||
0030 | 2B 70 B4 7F DF CF 82 A1 D3 50 57 B8 25 CF 3A C7
|
||||
0040 | FD 14 CE A9 66 79 E6 47</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>01EC581513C38E66</code></td>
|
||||
<td><code>01CC673757899266</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>64000000</code> (100 in decimal)</td>
|
||||
<td><code>48000000</code> (72 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>72FA62CB4968CBAD5C605DE659FEFD0B</code></td>
|
||||
<td><code>89FB777C8C42407D30CB64E107484779</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>5BD3A1EF21355440232BDA93B78E9FF5</code></td>
|
||||
<td><code>CFCEB241BE2A24102B70B47FDFCF82A1</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>63FBFE09A6161A54D757051EE0D0C09A</code></td>
|
||||
<td><code>D35057B825CF3AC7FD14CEA96679E647</code></td>
|
||||
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
Loading…
Add table
Reference in a new issue