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
e368b6c3c1
commit
2e20badd22
4 changed files with 277 additions and 209 deletions
|
@ -101,6 +101,23 @@
|
|||
<li>Removed messageInteractionCounters</li>
|
||||
<li>Removed messageActionSetSameChatWallPaper</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_GIVEAWAY</a> - <code>{1} posted a giveaway of {2}x {3}m Premium subscriptions</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GIVEAWAY</a> - <code>{1} sent a giveaway of {3}x {4}m Premium subscriptions to the group {2}</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_REACT_GIVEAWAY</a> - <code>{1} reacted {3} in group {2} to your giveaway</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_GIFTCODE</a> - <code>{1} sent you a Gift Code for {2} of Telegram Premium</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_GIVEAWAY</a> - <code>{1} sent you a giveaway of {2}x {3}m Premium subscriptions</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_SAME_WALLPAPER</a> - <code>{1} set a same wallpaper for this chat</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_WALLPAPER</a> - <code>{1} set a new wallpaper for this chat</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">PINNED_GIVEAWAY</a> - <code>{1} pinned a giveaway</code></li>
|
||||
<li>Added <a href="/api/push-updates#possible-notifications">REACT_GIVEAWAY</a> - <code>{1} reacted {2} to your giveaway</code></li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-push-notifications" id="changed-push-notifications" name="changed-push-notifications"><i class="anchor-icon"></i></a>Changed PUSH notifications</h5>
|
||||
<ul>
|
||||
<li>Changed template from <code>{1} is calling you!</code> to <code>posted a story</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_GIF</a></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/userFull">userFull</a>#b9b12c6c flags:<a href="/type/%23">#</a> blocked:flags.0?<a href="/constructor/true">true</a> phone_calls_available:flags.4?<a href="/constructor/true">true</a> phone_calls_private:flags.5?<a href="/constructor/true">true</a> can_pin_message:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.12?<a href="/constructor/true">true</a> video_calls_available:flags.13?<a href="/constructor/true">true</a> voice_messages_forbidden:flags.20?<a href="/constructor/true">true</a> translations_disabled:flags.23?<a href="/constructor/true">true</a> stories_pinned_available:flags.26?<a href="/constructor/true">true</a> blocked_my_stories_from:flags.27?<a href="/constructor/true">true</a> wallpaper_overridden:flags.28?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> about:flags.1?<a href="/type/string">string</a> settings:<a href="/type/PeerSettings">PeerSettings</a> personal_photo:flags.21?<a href="/type/Photo">Photo</a> profile_photo:flags.2?<a href="/type/Photo">Photo</a> fallback_photo:flags.22?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo">BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int">int</a> common_chats_count:<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> ttl_period:flags.14?<a href="/type/int">int</a> theme_emoticon:flags.15?<a href="/type/string">string</a> private_forward_name:flags.16?<a href="/type/string">string</a> bot_group_admin_rights:flags.17?<a href="/type/ChatAdminRights">ChatAdminRights</a> bot_broadcast_admin_rights:flags.18?<a href="/type/ChatAdminRights">ChatAdminRights</a> premium_gifts:flags.19?<a href="/type/Vector%20t">Vector</a><<a href="/type/PremiumGiftOption">PremiumGiftOption</a>> wallpaper:flags.24?<a href="/type/WallPaper">WallPaper</a> stories:flags.25?<a href="/type/PeerStories">PeerStories</a> = <a href="/type/UserFull">UserFull</a>;
|
||||
<a href="/constructor/user">user</a>#215c4438 flags:<a href="/type/%23">#</a> self:flags.10?<a href="/constructor/true">true</a> contact:flags.11?<a href="/constructor/true">true</a> mutual_contact:flags.12?<a href="/constructor/true">true</a> deleted:flags.13?<a href="/constructor/true">true</a> bot:flags.14?<a href="/constructor/true">true</a> bot_chat_history:flags.15?<a href="/constructor/true">true</a> bot_nochats:flags.16?<a href="/constructor/true">true</a> verified:flags.17?<a href="/constructor/true">true</a> restricted:flags.18?<a href="/constructor/true">true</a> min:flags.20?<a href="/constructor/true">true</a> bot_inline_geo:flags.21?<a href="/constructor/true">true</a> support:flags.23?<a href="/constructor/true">true</a> scam:flags.24?<a href="/constructor/true">true</a> apply_min_photo:flags.25?<a href="/constructor/true">true</a> fake:flags.26?<a href="/constructor/true">true</a> bot_attach_menu:flags.27?<a href="/constructor/true">true</a> premium:flags.28?<a href="/constructor/true">true</a> attach_menu_enabled:flags.29?<a href="/constructor/true">true</a> flags2:<a href="/type/%23">#</a> bot_can_edit:flags2.1?<a href="/constructor/true">true</a> close_friend:flags2.2?<a href="/constructor/true">true</a> stories_hidden:flags2.3?<a href="/constructor/true">true</a> stories_unavailable:flags2.4?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:flags.0?<a href="/type/long">long</a> first_name:flags.1?<a href="/type/string">string</a> last_name:flags.2?<a href="/type/string">string</a> username:flags.3?<a href="/type/string">string</a> phone:flags.4?<a href="/type/string">string</a> photo:flags.5?<a href="/type/UserProfilePhoto">UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus">UserStatus</a> bot_info_version:flags.14?<a href="/type/int">int</a> restriction_reason:flags.18?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href="/type/string">string</a> lang_code:flags.22?<a href="/type/string">string</a> emoji_status:flags.30?<a href="/type/EmojiStatus">EmojiStatus</a> usernames:flags2.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/Username">Username</a>> stories_max_id:flags2.5?<a href="/type/int">int</a> color:flags2.8?<a href="/type/PeerColor">PeerColor</a> profile_color:flags2.9?<a href="/type/PeerColor">PeerColor</a> = <a href="/type/User">User</a>;<br>
|
||||
|
|
|
@ -250,6 +250,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_GIVEAWAY</td>
|
||||
<td>{1} posted a giveaway of {2}x {3}m Premium subscriptions</td>
|
||||
<td>1. Channel name<br>2. Number of Telegram Premium subscriptions in the giveaway<br>3. Duration in months of each Telegram Premium subscription in the giveaway</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHANNEL_MESSAGE_NOTEXT</td>
|
||||
<td>{1} posted a message</td>
|
||||
<td>1. Channel name</td>
|
||||
|
@ -400,6 +405,11 @@ 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>CHAT_MESSAGE_GIVEAWAY</td>
|
||||
<td>{1} sent a giveaway of {3}x {4}m Premium subscriptions to the group {2}</td>
|
||||
<td>1. User name<br>2. Group name<br>3. Number of Telegram Premium subscriptions in the giveaway<br>4. Duration in months of each Telegram Premium subscription in the giveaway</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_MESSAGE_INVOICE</td>
|
||||
<td>{1} sent an invoice to the group {2} for {3}</td>
|
||||
<td>1. User name<br>2. Group name<br>3. Product name</td>
|
||||
|
@ -501,8 +511,13 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_REACT_GIF</td>
|
||||
<td>{1} is calling you!</td>
|
||||
<td>1. User name</td>
|
||||
<td>posted a story</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_REACT_GIVEAWAY</td>
|
||||
<td>{1} reacted {3} in group {2} to your giveaway</td>
|
||||
<td>1. User name<br>2. Group name<br>3. Reaction</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CHAT_REACT_INVOICE</td>
|
||||
|
@ -665,6 +680,16 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. User name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_GIFTCODE</td>
|
||||
<td>{1} sent you a Gift Code for {2} of Telegram Premium</td>
|
||||
<td>1. User name<br>2. Duration of Telegram Premium subscription</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_GIVEAWAY</td>
|
||||
<td>{1} sent you a giveaway of {2}x {3}m Premium subscriptions</td>
|
||||
<td>1. User name<br>2. Number of Telegram Premium subscriptions in the giveaway<br>3. Duration in months of each Telegram Premium subscription in the giveaway</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_INVOICE</td>
|
||||
<td>{1} sent you an invoice for {2}</td>
|
||||
<td>1. User name<br>2. Product</td>
|
||||
|
@ -715,6 +740,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. User name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_SAME_WALLPAPER</td>
|
||||
<td>{1} set a same wallpaper for this chat</td>
|
||||
<td>1. User name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_SCREENSHOT</td>
|
||||
<td>{1} took a screenshot</td>
|
||||
<td>1. User name</td>
|
||||
|
@ -755,6 +785,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>1. User name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE_WALLPAPER</td>
|
||||
<td>{1} set a new wallpaper for this chat</td>
|
||||
<td>1. User name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PHONE_CALL_MISSED</td>
|
||||
<td>You missed a call from {1}</td>
|
||||
<td>1. User name</td>
|
||||
|
@ -845,6 +880,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_GIVEAWAY</td>
|
||||
<td>{1} pinned a giveaway</td>
|
||||
<td>1. User name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PINNED_GIVEAWAY</td>
|
||||
<td>{1} pinned a giveaway in the group {2}</td>
|
||||
<td>1. User name<br>2. Group name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PINNED_INVOICE</td>
|
||||
<td>{1} pinned an invoice</td>
|
||||
<td>1. User name</td>
|
||||
|
@ -970,6 +1015,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
|
|||
<td>2. Reaction</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>REACT_GIVEAWAY</td>
|
||||
<td>{1} reacted {2} to your giveaway</td>
|
||||
<td>1. User name<br>2. Reaction</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>REACT_INVOICE</td>
|
||||
<td>{2} to your invoice</td>
|
||||
<td>2. Reaction</td>
|
||||
|
|
|
@ -57,7 +57,8 @@
|
|||
<a href='/constructor/statsGraphError'>statsGraphError</a>#bedc9822 error:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>;
|
||||
<a href='/constructor/statsGraph'>statsGraph</a>#8ea464b6 flags:<a href='/type/%23'>#</a> json:<a href='/type/DataJSON'>DataJSON</a> zoom_token:flags.0?<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>;
|
||||
|
||||
<a href='/constructor/messageInteractionCounters'>messageInteractionCounters</a>#ad4fc9bd msg_id:<a href='/type/int'>int</a> views:<a href='/type/int'>int</a> forwards:<a href='/type/int'>int</a> = <a href='/type/MessageInteractionCounters'>MessageInteractionCounters</a>;
|
||||
<a href='/constructor/postInteractionCountersMessage'>postInteractionCountersMessage</a>#e7058e7f msg_id:<a href='/type/int'>int</a> views:<a href='/type/int'>int</a> forwards:<a href='/type/int'>int</a> reactions:<a href='/type/int'>int</a> = <a href='/type/PostInteractionCounters'>PostInteractionCounters</a>;
|
||||
<a href='/constructor/postInteractionCountersStory'>postInteractionCountersStory</a>#8a480e27 story_id:<a href='/type/int'>int</a> views:<a href='/type/int'>int</a> forwards:<a href='/type/int'>int</a> reactions:<a href='/type/int'>int</a> = <a href='/type/PostInteractionCounters'>PostInteractionCounters</a>;
|
||||
|
||||
<a href='/constructor/stats.broadcastStats'>stats.broadcastStats</a>#396ca5fc period:<a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a> followers:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> views_per_post:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> shares_per_post:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> reactions_per_post:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> views_per_story:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> shares_per_story:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> reactions_per_story:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> enabled_notifications:<a href='/type/StatsPercentValue'>StatsPercentValue</a> growth_graph:<a href='/type/StatsGraph'>StatsGraph</a> followers_graph:<a href='/type/StatsGraph'>StatsGraph</a> mute_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_hours_graph:<a href='/type/StatsGraph'>StatsGraph</a> interactions_graph:<a href='/type/StatsGraph'>StatsGraph</a> iv_interactions_graph:<a href='/type/StatsGraph'>StatsGraph</a> views_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> new_followers_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> languages_graph:<a href='/type/StatsGraph'>StatsGraph</a> reactions_by_emotion_graph:<a href='/type/StatsGraph'>StatsGraph</a> story_interactions_graph:<a href='/type/StatsGraph'>StatsGraph</a> story_reactions_by_emotion_graph:<a href='/type/StatsGraph'>StatsGraph</a> recent_posts_interactions:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PostInteractionCounters'>PostInteractionCounters</a>> = <a href='/type/stats.BroadcastStats'>stats.BroadcastStats</a>;
|
||||
|
||||
|
|
|
@ -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 98 3F 04 00 A3 F9 70 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 33 5E 99 59 32 B9 7A B0
|
||||
0020 | F4 99 8B 49 79 A9 8A B8</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 24 8F 02 00 B6 30 72 65
|
||||
0010 | 14 00 00 00 F1 8E 7E BE A0 C3 6E 98 B7 E1 6B 63
|
||||
0020 | D0 EF D6 D1 F3 3D 86 13</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>983F0400A3F97065</code></td>
|
||||
<td><code>248F0200B6307265</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>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</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 B4 69 C6 A3 F9 70 65
|
||||
0010 | 94 00 00 00 63 24 16 05 33 5E 99 59 32 B9 7A B0
|
||||
0020 | F4 99 8B 49 79 A9 8A B8 1D 2A 19 43 39 EB D2 05
|
||||
0030 | 03 B5 CB 18 9E DE 22 74 08 16 08 6A F8 56 4E 3E
|
||||
0040 | 97 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 18 39 A7 B6 30 72 65
|
||||
0010 | 7C 00 00 00 63 24 16 05 A0 C3 6E 98 B7 E1 6B 63
|
||||
0020 | D0 EF D6 D1 F3 3D 86 13 A2 00 C9 D3 74 62 9E 4C
|
||||
0030 | D5 8D 79 8C FF AC 07 F8 08 14 B3 5F 13 6D 99 AF
|
||||
0040 | C5 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>01B469C6A3F97065</code></td>
|
||||
<td><code>011839A7B6307265</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>94000000</code> (148 in decimal)</td>
|
||||
<td><code>7C000000</code> (124 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>0816086AF8564E3E97000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1587636483480501911</td>
|
||||
<td><code>0814B35F136D99AFC5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1491640438637572037</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 = 1587636483480501911</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1587636483480501911 = 1073677151 * 1478690761</code></p>
|
||||
<pre><code>p = 1073677151
|
||||
q = 1478690761</code></pre>
|
||||
<pre><code>pq = 1491640438637572037</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1491640438637572037 = 1127944757 * 1322441041</code></p>
|
||||
<pre><code>p = 1127944757
|
||||
q = 1322441041</code></pre>
|
||||
<!-- end pq -->
|
||||
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
|
||||
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
|
||||
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
|
||||
<!-- start p_q_inner_data_dc -->
|
||||
<p>Generated payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 95 5F F5 A9 08 16 08 6A F8 56 4E 3E 97 00 00 00
|
||||
0010 | 04 3F FF 03 5F 00 00 00 04 58 23 07 C9 00 00 00
|
||||
0020 | 33 5E 99 59 32 B9 7A B0 F4 99 8B 49 79 A9 8A B8
|
||||
0030 | 1D 2A 19 43 39 EB D2 05 03 B5 CB 18 9E DE 22 74
|
||||
0040 | 16 88 B5 70 21 F1 B7 54 78 B1 AF 42 01 EF 0C 39
|
||||
0050 | B3 A0 08 7D BF DB 4E E9 E8 B3 64 43 6F 91 E0 19
|
||||
<pre><code>0000 | 95 5F F5 A9 08 14 B3 5F 13 6D 99 AF C5 00 00 00
|
||||
0010 | 04 43 3B 12 35 00 00 00 04 4E D2 D9 51 00 00 00
|
||||
0020 | A0 C3 6E 98 B7 E1 6B 63 D0 EF D6 D1 F3 3D 86 13
|
||||
0030 | A2 00 C9 D3 74 62 9E 4C D5 8D 79 8C FF AC 07 F8
|
||||
0040 | 33 D0 B6 D0 C3 ED 1F 0D 74 2D 9E F6 12 3F CE 0E
|
||||
0050 | 1E 77 47 EE 6F 2B 65 01 6A EE 3E 3E B4 72 1C 57
|
||||
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 = 1478690761</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>0816086AF8564E3E97000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1587636483480501911</td>
|
||||
<td><code>0814B35F136D99AFC5000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1491640438637572037</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>043FFF035F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1073677151</td>
|
||||
<td><code>04433B1235000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1127944757</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>04582307C9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1478690761</td>
|
||||
<td><code>044ED2D951000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1322441041</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>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>1688B57021F1B75478B1AF4201EF0C39</code> <code>B3A0087DBFDB4EE9E8B364436F91E019</code></td>
|
||||
<td><code>33D0B6D0C3ED1F0D742D9EF6123FCE0E</code> <code>1E7747EE6F2B65016AEE3E3EB4721C57</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1478690761</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 = 955FF5A90816086AF8564E3E97000000043FFF035F00000004582307C9000000335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE22741688B57021F1B75478B1AF4201EF0C39B3A0087DBFDB4EE9E8B364436F91E01902000000
|
||||
random_padding_bytes = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E832F1F80339BCA128975C48984B2FAF137E4F0E1AD265155E78E2886FDD0FDBB5E96E2A6314725020837EBF1CDE644D45513BE477569CBA041DE7779AD5B536</code></pre>
|
||||
<pre><code>data = 955FF5A90814B35F136D99AFC500000004433B1235000000044ED2D951000000A0C36E98B7E16B63D0EFD6D1F33D8613A200C9D374629E4CD58D798CFFAC07F833D0B6D0C3ED1F0D742D9EF6123FCE0E1E7747EE6F2B65016AEE3E3EB4721C5702000000
|
||||
random_padding_bytes = 28DA166BE2BFD1D84C9BD4D719D550AA6332D0C3BCFF2780E1060BB1ABB2DB2EF96842F478D13BE8607FB461DAAB03756634B5FE4380E111077D06C91F457314DC37A961CB38AC604526DA8F81C20A012122BC455EC145C1ED65C291</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 = 2729BF829FFFB5D06241439874A5AE5CE5F7F6E22DBD98E60566E2AEA4B43793BAF98CD5A35FAF3C9EF5BD9D9B2DFF7BD3B58C08EE9D6F382260822C2B45C918E03B51A855FD16F29B81476B56F36507EE92DFF1603BAFA739A8109F5C0244471BAFD3F62DA29804E346A031DC0BEAC6D66300677CCF6ECD76D26B42A3029B079BA94693E16A04EB9CA7507A0423CA26DB77212970D41B76904935E79AC7458A7BC8F0262ED81292BAA715C69A86F255EA22EE777E243866E5D61BE5921DA6369EF6417450829278AA020E5B1D2182B5BFB9A1E9ED8F526109FCAE381B684AD0936371E09088FBF399AF804FC7A45191EFCE78EE75F8B615F6A60D53D1D15275</code></pre>
|
||||
<pre><code>encrypted_data = 94F50A0AD58828AB86B062DF2F395A6C78243F78D1BC7AC2549E7F3E53E85459E31BC077150335984BFB8FAE8EEA5A8723B6B5C41EB7F892D47A86410519DC4B4F97F1DCF596FB4439366CD33154E2A02DFFE14F93792E708D070FD3505F80FA3892ECBCA4A71C32930D62946F907B1A573965497DE25B82BC48350F4430E5D9B45A1EB8D647914BF3CC148AB7015575F30676302DA808FC167BEF26F4FC1E0C6C68AB3486CAC0F54BB62E9AEB8230D6946E805EF30EA407023DB50A319B5AF06F81C844C1600001E8C8B90719976B1684D185C2DCA609042C3BE1CB47CD546C1FDE6FA6DB0C3D4A8D168FC132F01D8F00141974C3DD1D98DEA8C137E1B14219</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 9C 3F 04 00 A3 F9 70 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 33 5E 99 59 32 B9 7A B0
|
||||
0020 | F4 99 8B 49 79 A9 8A B8 1D 2A 19 43 39 EB D2 05
|
||||
0030 | 03 B5 CB 18 9E DE 22 74 04 3F FF 03 5F 00 00 00
|
||||
0040 | 04 58 23 07 C9 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 27 29 BF 82 9F FF B5 D0 62 41 43 98
|
||||
0060 | 74 A5 AE 5C E5 F7 F6 E2 2D BD 98 E6 05 66 E2 AE
|
||||
0070 | A4 B4 37 93 BA F9 8C D5 A3 5F AF 3C 9E F5 BD 9D
|
||||
0080 | 9B 2D FF 7B D3 B5 8C 08 EE 9D 6F 38 22 60 82 2C
|
||||
0090 | 2B 45 C9 18 E0 3B 51 A8 55 FD 16 F2 9B 81 47 6B
|
||||
00A0 | 56 F3 65 07 EE 92 DF F1 60 3B AF A7 39 A8 10 9F
|
||||
00B0 | 5C 02 44 47 1B AF D3 F6 2D A2 98 04 E3 46 A0 31
|
||||
00C0 | DC 0B EA C6 D6 63 00 67 7C CF 6E CD 76 D2 6B 42
|
||||
00D0 | A3 02 9B 07 9B A9 46 93 E1 6A 04 EB 9C A7 50 7A
|
||||
00E0 | 04 23 CA 26 DB 77 21 29 70 D4 1B 76 90 49 35 E7
|
||||
00F0 | 9A C7 45 8A 7B C8 F0 26 2E D8 12 92 BA A7 15 C6
|
||||
0100 | 9A 86 F2 55 EA 22 EE 77 7E 24 38 66 E5 D6 1B E5
|
||||
0110 | 92 1D A6 36 9E F6 41 74 50 82 92 78 AA 02 0E 5B
|
||||
0120 | 1D 21 82 B5 BF B9 A1 E9 ED 8F 52 61 09 FC AE 38
|
||||
0130 | 1B 68 4A D0 93 63 71 E0 90 88 FB F3 99 AF 80 4F
|
||||
0140 | C7 A4 51 91 EF CE 78 EE 75 F8 B6 15 F6 A6 0D 53
|
||||
0150 | D1 D1 52 75</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 28 8F 02 00 B6 30 72 65
|
||||
0010 | 40 01 00 00 BE E4 12 D7 A0 C3 6E 98 B7 E1 6B 63
|
||||
0020 | D0 EF D6 D1 F3 3D 86 13 A2 00 C9 D3 74 62 9E 4C
|
||||
0030 | D5 8D 79 8C FF AC 07 F8 04 43 3B 12 35 00 00 00
|
||||
0040 | 04 4E D2 D9 51 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 94 F5 0A 0A D5 88 28 AB 86 B0 62 DF
|
||||
0060 | 2F 39 5A 6C 78 24 3F 78 D1 BC 7A C2 54 9E 7F 3E
|
||||
0070 | 53 E8 54 59 E3 1B C0 77 15 03 35 98 4B FB 8F AE
|
||||
0080 | 8E EA 5A 87 23 B6 B5 C4 1E B7 F8 92 D4 7A 86 41
|
||||
0090 | 05 19 DC 4B 4F 97 F1 DC F5 96 FB 44 39 36 6C D3
|
||||
00A0 | 31 54 E2 A0 2D FF E1 4F 93 79 2E 70 8D 07 0F D3
|
||||
00B0 | 50 5F 80 FA 38 92 EC BC A4 A7 1C 32 93 0D 62 94
|
||||
00C0 | 6F 90 7B 1A 57 39 65 49 7D E2 5B 82 BC 48 35 0F
|
||||
00D0 | 44 30 E5 D9 B4 5A 1E B8 D6 47 91 4B F3 CC 14 8A
|
||||
00E0 | B7 01 55 75 F3 06 76 30 2D A8 08 FC 16 7B EF 26
|
||||
00F0 | F4 FC 1E 0C 6C 68 AB 34 86 CA C0 F5 4B B6 2E 9A
|
||||
0100 | EB 82 30 D6 94 6E 80 5E F3 0E A4 07 02 3D B5 0A
|
||||
0110 | 31 9B 5A F0 6F 81 C8 44 C1 60 00 01 E8 C8 B9 07
|
||||
0120 | 19 97 6B 16 84 D1 85 C2 DC A6 09 04 2C 3B E1 CB
|
||||
0130 | 47 CD 54 6C 1F DE 6F A6 DB 0C 3D 4A 8D 16 8F C1
|
||||
0140 | 32 F0 1D 8F 00 14 19 74 C3 DD 1D 98 DE A8 C1 37
|
||||
0150 | E1 B1 42 19</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 = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>9C3F0400A3F97065</code></td>
|
||||
<td><code>288F0200B6307265</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 = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>043FFF035F000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1073677151</td>
|
||||
<td><code>04433B1235000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1127944757</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>04582307C9000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1478690761</td>
|
||||
<td><code>044ED2D951000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1322441041</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 = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE0001002729BF829FFFB5D062414398</code> <code>74A5AE5CE5F7F6E22DBD98E60566E2AE</code> <code>A4B43793BAF98CD5A35FAF3C9EF5BD9D</code> <code>9B2DFF7BD3B58C08EE9D6F382260822C</code> <code>2B45C918E03B51A855FD16F29B81476B</code> <code>56F36507EE92DFF1603BAFA739A8109F</code> <code>5C0244471BAFD3F62DA29804E346A031</code> <code>DC0BEAC6D66300677CCF6ECD76D26B42</code> <code>A3029B079BA94693E16A04EB9CA7507A</code> <code>0423CA26DB77212970D41B76904935E7</code> <code>9AC7458A7BC8F0262ED81292BAA715C6</code> <code>9A86F255EA22EE777E243866E5D61BE5</code> <code>921DA6369EF6417450829278AA020E5B</code> <code>1D2182B5BFB9A1E9ED8F526109FCAE38</code> <code>1B684AD0936371E09088FBF399AF804F</code> <code>C7A45191EFCE78EE75F8B615F6A60D53</code><br> <code>D1D15275</code></td>
|
||||
<td><code>FE00010094F50A0AD58828AB86B062DF</code> <code>2F395A6C78243F78D1BC7AC2549E7F3E</code> <code>53E85459E31BC077150335984BFB8FAE</code> <code>8EEA5A8723B6B5C41EB7F892D47A8641</code> <code>0519DC4B4F97F1DCF596FB4439366CD3</code> <code>3154E2A02DFFE14F93792E708D070FD3</code> <code>505F80FA3892ECBCA4A71C32930D6294</code> <code>6F907B1A573965497DE25B82BC48350F</code> <code>4430E5D9B45A1EB8D647914BF3CC148A</code> <code>B7015575F30676302DA808FC167BEF26</code> <code>F4FC1E0C6C68AB3486CAC0F54BB62E9A</code> <code>EB8230D6946E805EF30EA407023DB50A</code> <code>319B5AF06F81C844C1600001E8C8B907</code> <code>19976B1684D185C2DCA609042C3BE1CB</code> <code>47CD546C1FDE6FA6DB0C3D4A8D168FC1</code> <code>32F01D8F00141974C3DD1D98DEA8C137</code><br> <code>E1B14219</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E
|
|||
<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 74 0C 57 A4 F9 70 65
|
||||
0010 | C8 02 00 00 5C 07 E8 D0 33 5E 99 59 32 B9 7A B0
|
||||
0020 | F4 99 8B 49 79 A9 8A B8 1D 2A 19 43 39 EB D2 05
|
||||
0030 | 03 B5 CB 18 9E DE 22 74 FE 50 02 00 4B A8 5D EB
|
||||
0040 | AA D7 29 5D 89 25 71 4C FD A1 C2 6B F6 96 07 54
|
||||
0050 | A4 CF AB 54 B5 25 C4 ED 4C 61 85 67 E5 47 47 2D
|
||||
0060 | 60 B6 F2 E7 91 62 42 A3 E6 B6 83 A2 A9 FF EB A0
|
||||
0070 | 61 00 F5 B3 C2 A8 FE 0B EF A3 E4 CF 63 F3 7D 91
|
||||
0080 | 1F 80 F1 FF 95 CD 1D 2D 0A 1A EF B4 F2 69 97 B0
|
||||
0090 | 92 80 C9 54 01 A6 AE 10 35 16 76 32 06 12 22 8B
|
||||
00A0 | 03 62 03 E0 64 4A BA 17 87 40 96 ED 5A 6A 0D DB
|
||||
00B0 | AA 42 0A C6 D0 D4 43 16 B7 9A 8A D4 A0 F3 AD 8F
|
||||
00C0 | E5 8A 8D 39 B1 3A 91 E5 A4 22 BC 1D F1 06 D7 AF
|
||||
00D0 | D6 A4 58 0A 26 46 3F 79 33 3D A8 24 79 87 79 03
|
||||
00E0 | 63 31 11 81 03 AB AC CB 76 8D A5 1C AF FA B7 AD
|
||||
00F0 | 96 6E 79 FA C3 95 F1 6F A2 C7 5F A5 57 75 E7 8F
|
||||
0100 | CF 2C 37 C8 1A 5A 6D D7 6B 27 91 80 38 F7 F9 6A
|
||||
0110 | 38 20 C9 51 78 59 6F 95 86 D5 00 43 EC 98 CE 01
|
||||
0120 | F7 7F E2 8D 7F 58 70 16 A9 51 E6 33 C9 2D 3F FE
|
||||
0130 | D7 61 EE A2 68 F2 40 88 F7 E9 43 48 09 D0 4D 58
|
||||
0140 | 64 7D 5A AA B1 DB 10 F1 B7 0E 06 9D 9F DB 1F DB
|
||||
0150 | 1B 4A 99 3F CA 5E 40 C3 E4 68 28 9C 63 F4 7E 75
|
||||
0160 | 7C 30 63 52 12 7B D7 56 EF E0 F5 C0 6C DC 5B 0E
|
||||
0170 | C0 C4 BD 1A B7 13 E5 FA B4 3B 0A EA 24 8F 0F DB
|
||||
0180 | 5F 79 D9 90 A4 37 32 DE 0B 13 A9 7B 4D C1 D5 B7
|
||||
0190 | EF 82 82 F0 32 D0 1D 03 FD B1 41 41 FF E4 E5 54
|
||||
01A0 | 5E EA 5C 26 CF D3 23 4A BC C0 7D 0A F3 18 76 90
|
||||
01B0 | D9 B1 E7 8D 7F E0 E2 75 CF 64 EB 43 6D E7 E6 7C
|
||||
01C0 | EE C5 63 BD 9B 1B 60 4E CD AE 34 60 EC 34 DD A2
|
||||
01D0 | 4F 15 BE 19 11 BA 47 58 17 31 39 68 FA 9F D7 3D
|
||||
01E0 | 4A A6 C0 E1 50 4C 77 6A 84 99 7A 64 85 D7 55 4F
|
||||
01F0 | 90 3C CB 73 B6 12 2A 5D 22 82 72 8D 75 7E 3B B1
|
||||
0200 | B1 34 2C AF EC B6 F2 AF B3 3A F6 C2 D8 49 D6 91
|
||||
0210 | F9 2F 9E 06 F1 F0 1F A2 A4 6D 52 A6 AA 96 F4 E3
|
||||
0220 | 7B 1E DF EB 5B CE C6 E6 3B 5B 0C 34 BE 19 1A AF
|
||||
0230 | 20 57 08 AD 29 55 28 E5 22 AD D2 39 2B 8E 98 66
|
||||
0240 | 34 19 A3 87 1E 0A F5 72 98 46 5A 19 33 14 EC D8
|
||||
0250 | 87 02 7B 37 91 2C 7D 9D 72 4A A1 9B AF 6D 56 CB
|
||||
0260 | 66 1C 51 47 D1 A8 B0 73 0A DE 8F B9 AA C8 18 D2
|
||||
0270 | 4B E8 C8 34 D2 1F 47 7F 46 04 56 A3 EE 3C F3 EA
|
||||
0280 | FC 5E 58 E9 E2 23 95 19 58 70 41 68</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 14 3E 65 B7 30 72 65
|
||||
0010 | BC 02 00 00 5C 07 E8 D0 A0 C3 6E 98 B7 E1 6B 63
|
||||
0020 | D0 EF D6 D1 F3 3D 86 13 A2 00 C9 D3 74 62 9E 4C
|
||||
0030 | D5 8D 79 8C FF AC 07 F8 FE 50 02 00 1E DF 50 2B
|
||||
0040 | 9A DF 93 F3 B8 EA 3A 69 E4 63 4E A6 3D B5 C9 54
|
||||
0050 | A0 AC E4 E5 7B 21 99 15 9F 19 25 11 FC 0A F1 CB
|
||||
0060 | 38 D5 B5 53 1C 28 49 ED BE 22 54 34 E0 E8 89 96
|
||||
0070 | 19 72 58 78 0D 7B F9 C9 FA D8 5A 50 EA F1 29 62
|
||||
0080 | 34 13 1B 4B FA 7D D2 1E F9 93 E6 70 5D 28 D5 B6
|
||||
0090 | 52 4B 93 BE 2B 26 D7 1C 4C 81 0C B5 D5 D2 B5 5F
|
||||
00A0 | EC CD 8B 8C 10 04 2C E4 C4 A6 E7 38 B8 C5 FB 89
|
||||
00B0 | 89 51 47 08 39 FF 64 A8 E2 2B 90 15 51 32 49 D7
|
||||
00C0 | 70 55 35 C9 84 33 86 A3 7F 98 EA 36 64 B3 FD C7
|
||||
00D0 | DE 68 C6 C9 9A 93 0B FE C5 29 AA B3 86 DA 2D F6
|
||||
00E0 | 78 0F D1 2F 07 A1 02 A6 20 C8 75 E2 47 7C C7 40
|
||||
00F0 | D3 F5 C4 F0 DA D3 AF 6E E0 79 3A 4A F4 55 C6 7C
|
||||
0100 | 39 3A 15 AF AE 6A 93 20 60 16 9E 09 B7 DB 67 24
|
||||
0110 | 96 C6 12 F2 56 61 B0 76 2C F4 43 D8 61 B3 E2 3C
|
||||
0120 | 01 B4 86 2C FC 9D 0C 98 76 38 42 BA DF 16 79 A7
|
||||
0130 | F1 43 48 06 16 3F 98 D9 9B 7E D0 E1 AA 11 F5 CC
|
||||
0140 | AF 23 92 3F A1 D0 DD 69 5C D3 CF F6 A1 41 2F 39
|
||||
0150 | E0 53 64 46 C4 8A 86 28 AE 8F C0 13 2F 8D 11 1C
|
||||
0160 | C8 15 B5 AD C5 C5 0E 0A 27 2B 4A F8 D4 47 84 A3
|
||||
0170 | 13 DE A9 5A 05 30 4A 69 D0 51 46 B6 A2 8C 85 B4
|
||||
0180 | 09 EC FE 65 4C 3D ED 85 A7 47 A8 DC BC 38 00 7B
|
||||
0190 | 46 9A 40 3E 06 91 88 40 30 E5 CF 69 93 0A 6A 2F
|
||||
01A0 | A6 AC CB 01 6C 25 82 EA 14 B4 FB 9A 96 22 C3 86
|
||||
01B0 | D8 6E 18 B3 F4 14 2F 73 DE E3 73 21 EE 21 78 B9
|
||||
01C0 | 4C FC A7 89 35 CF EA 0D FE 04 FF 20 22 EC AE 8B
|
||||
01D0 | AB 7E F1 ED 2E FA 18 A6 75 F9 99 CE BF C5 86 EC
|
||||
01E0 | 4A 74 A0 58 E5 77 2C 54 7F 6E E7 D3 45 B8 D5 BF
|
||||
01F0 | E8 D6 E3 B9 81 39 90 09 E7 E1 34 92 C2 F6 D0 24
|
||||
0200 | B5 C2 A8 7C 3C 13 72 16 0C 06 71 8D BD 5F 20 C9
|
||||
0210 | 2F BE D5 FF 93 10 EB 1B 85 87 5D D3 A6 33 3B 7B
|
||||
0220 | 4E BD 71 B1 AC 6F 4D B5 B5 76 F5 E6 B0 47 87 F4
|
||||
0230 | D5 1D F6 23 F2 BB B1 90 49 AC 59 C8 E7 01 E3 F8
|
||||
0240 | 64 0A 89 D6 BF 84 44 08 E4 6E 42 46 16 CE 8B 98
|
||||
0250 | DB AC DE D3 D3 6F 91 DB 45 2F CC E9 B0 16 4D 5E
|
||||
0260 | 2B 48 E4 18 46 56 B4 3D 3A F3 39 7D 4C 46 D5 38
|
||||
0270 | 68 F2 9A F0 E6 29 5C 6B 80 32 92 EE BE 7A 91 E1
|
||||
0280 | A7 29 84 3D 6D E2 2F B0 1F E7 48 CA</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 = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01740C57A4F97065</code></td>
|
||||
<td><code>01143E65B7307265</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>C8020000</code> (712 in decimal)</td>
|
||||
<td><code>BC020000</code> (700 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE5002004BA85DEBAAD7295D8925714C</code> <code>FDA1C26BF6960754A4CFAB54B525C4ED</code> <code>4C618567E547472D60B6F2E7916242A3</code> <code>E6B683A2A9FFEBA06100F5B3C2A8FE0B</code> <code>EFA3E4CF63F37D911F80F1FF95CD1D2D</code> <code>0A1AEFB4F26997B09280C95401A6AE10</code> <code>351676320612228B036203E0644ABA17</code> <code>874096ED5A6A0DDBAA420AC6D0D44316</code> <code>B79A8AD4A0F3AD8FE58A8D39B13A91E5</code> <code>A422BC1DF106D7AFD6A4580A26463F79</code> <code>333DA824798779036331118103ABACCB</code> <code>768DA51CAFFAB7AD966E79FAC395F16F</code> <code>A2C75FA55775E78FCF2C37C81A5A6DD7</code> <code>6B27918038F7F96A3820C95178596F95</code> <code>86D50043EC98CE01F77FE28D7F587016</code> <code>A951E633C92D3FFED761EEA268F24088</code> <code>F7E9434809D04D58647D5AAAB1DB10F1</code> <code>B70E069D9FDB1FDB1B4A993FCA5E40C3</code> <code>E468289C63F47E757C306352127BD756</code> <code>EFE0F5C06CDC5B0EC0C4BD1AB713E5FA</code> <code>B43B0AEA248F0FDB5F79D990A43732DE</code> <code>0B13A97B4DC1D5B7EF8282F032D01D03</code> <code>FDB14141FFE4E5545EEA5C26CFD3234A</code> <code>BCC07D0AF3187690D9B1E78D7FE0E275</code> <code>CF64EB436DE7E67CEEC563BD9B1B604E</code> <code>CDAE3460EC34DDA24F15BE1911BA4758</code> <code>17313968FA9FD73D4AA6C0E1504C776A</code> <code>84997A6485D7554F903CCB73B6122A5D</code> <code>2282728D757E3BB1B1342CAFECB6F2AF</code> <code>B33AF6C2D849D691F92F9E06F1F01FA2</code> <code>A46D52A6AA96F4E37B1EDFEB5BCEC6E6</code> <code>3B5B0C34BE191AAF205708AD295528E5</code> <code>22ADD2392B8E98663419A3871E0AF572</code> <code>98465A193314ECD887027B37912C7D9D</code> <code>724AA19BAF6D56CB661C5147D1A8B073</code> <code>0ADE8FB9AAC818D24BE8C834D21F477F</code> <code>460456A3EE3CF3EAFC5E58E9E2239519</code><br> <code>58704168</code></td>
|
||||
<td><code>FE5002001EDF502B9ADF93F3B8EA3A69</code> <code>E4634EA63DB5C954A0ACE4E57B219915</code> <code>9F192511FC0AF1CB38D5B5531C2849ED</code> <code>BE225434E0E88996197258780D7BF9C9</code> <code>FAD85A50EAF1296234131B4BFA7DD21E</code> <code>F993E6705D28D5B6524B93BE2B26D71C</code> <code>4C810CB5D5D2B55FECCD8B8C10042CE4</code> <code>C4A6E738B8C5FB898951470839FF64A8</code> <code>E22B9015513249D7705535C9843386A3</code> <code>7F98EA3664B3FDC7DE68C6C99A930BFE</code> <code>C529AAB386DA2DF6780FD12F07A102A6</code> <code>20C875E2477CC740D3F5C4F0DAD3AF6E</code> <code>E0793A4AF455C67C393A15AFAE6A9320</code> <code>60169E09B7DB672496C612F25661B076</code> <code>2CF443D861B3E23C01B4862CFC9D0C98</code> <code>763842BADF1679A7F1434806163F98D9</code> <code>9B7ED0E1AA11F5CCAF23923FA1D0DD69</code> <code>5CD3CFF6A1412F39E0536446C48A8628</code> <code>AE8FC0132F8D111CC815B5ADC5C50E0A</code> <code>272B4AF8D44784A313DEA95A05304A69</code> <code>D05146B6A28C85B409ECFE654C3DED85</code> <code>A747A8DCBC38007B469A403E06918840</code> <code>30E5CF69930A6A2FA6ACCB016C2582EA</code> <code>14B4FB9A9622C386D86E18B3F4142F73</code> <code>DEE37321EE2178B94CFCA78935CFEA0D</code> <code>FE04FF2022ECAE8BAB7EF1ED2EFA18A6</code> <code>75F999CEBFC586EC4A74A058E5772C54</code> <code>7F6EE7D345B8D5BFE8D6E3B981399009</code> <code>E7E13492C2F6D024B5C2A87C3C137216</code> <code>0C06718DBD5F20C92FBED5FF9310EB1B</code> <code>85875DD3A6333B7B4EBD71B1AC6F4DB5</code> <code>B576F5E6B04787F4D51DF623F2BBB190</code> <code>49AC59C8E701E3F8640A89D6BF844408</code> <code>E46E424616CE8B98DBACDED3D36F91DB</code> <code>452FCCE9B0164D5E2B48E4184656B43D</code> <code>3AF3397D4C46D53868F29AF0E6295C6B</code> <code>803292EEBE7A91E1A729843D6DE22FB0</code><br> <code>1FE748CA</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 03C3525F2E8094596546A1360C6AB351EEACC6530CB815E42FCAFB26E
|
|||
<!-- 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 = 4BA85DEBAAD7295D8925714CFDA1C26BF6960754A4CFAB54B525C4ED4C618567E547472D60B6F2E7916242A3E6B683A2A9FFEBA06100F5B3C2A8FE0BEFA3E4CF63F37D911F80F1FF95CD1D2D0A1AEFB4F26997B09280C95401A6AE10351676320612228B036203E0644ABA17874096ED5A6A0DDBAA420AC6D0D44316B79A8AD4A0F3AD8FE58A8D39B13A91E5A422BC1DF106D7AFD6A4580A26463F79333DA824798779036331118103ABACCB768DA51CAFFAB7AD966E79FAC395F16FA2C75FA55775E78FCF2C37C81A5A6DD76B27918038F7F96A3820C95178596F9586D50043EC98CE01F77FE28D7F587016A951E633C92D3FFED761EEA268F24088F7E9434809D04D58647D5AAAB1DB10F1B70E069D9FDB1FDB1B4A993FCA5E40C3E468289C63F47E757C306352127BD756EFE0F5C06CDC5B0EC0C4BD1AB713E5FAB43B0AEA248F0FDB5F79D990A43732DE0B13A97B4DC1D5B7EF8282F032D01D03FDB14141FFE4E5545EEA5C26CFD3234ABCC07D0AF3187690D9B1E78D7FE0E275CF64EB436DE7E67CEEC563BD9B1B604ECDAE3460EC34DDA24F15BE1911BA475817313968FA9FD73D4AA6C0E1504C776A84997A6485D7554F903CCB73B6122A5D2282728D757E3BB1B1342CAFECB6F2AFB33AF6C2D849D691F92F9E06F1F01FA2A46D52A6AA96F4E37B1EDFEB5BCEC6E63B5B0C34BE191AAF205708AD295528E522ADD2392B8E98663419A3871E0AF57298465A193314ECD887027B37912C7D9D724AA19BAF6D56CB661C5147D1A8B0730ADE8FB9AAC818D24BE8C834D21F477F460456A3EE3CF3EAFC5E58E9E223951958704168
|
||||
tmp_aes_key = 9A4E3B9FFC93395AEF3A1A3D980C65B346AD55239764095BCE4CE82EF7D7B188
|
||||
tmp_aes_iv = 080199AE9E1B3CB91C6AECDD853F64F0A82A203CC088FA0F2D8F19D71688B570</code></pre>
|
||||
<pre><code>encrypted_answer = 1EDF502B9ADF93F3B8EA3A69E4634EA63DB5C954A0ACE4E57B2199159F192511FC0AF1CB38D5B5531C2849EDBE225434E0E88996197258780D7BF9C9FAD85A50EAF1296234131B4BFA7DD21EF993E6705D28D5B6524B93BE2B26D71C4C810CB5D5D2B55FECCD8B8C10042CE4C4A6E738B8C5FB898951470839FF64A8E22B9015513249D7705535C9843386A37F98EA3664B3FDC7DE68C6C99A930BFEC529AAB386DA2DF6780FD12F07A102A620C875E2477CC740D3F5C4F0DAD3AF6EE0793A4AF455C67C393A15AFAE6A932060169E09B7DB672496C612F25661B0762CF443D861B3E23C01B4862CFC9D0C98763842BADF1679A7F1434806163F98D99B7ED0E1AA11F5CCAF23923FA1D0DD695CD3CFF6A1412F39E0536446C48A8628AE8FC0132F8D111CC815B5ADC5C50E0A272B4AF8D44784A313DEA95A05304A69D05146B6A28C85B409ECFE654C3DED85A747A8DCBC38007B469A403E0691884030E5CF69930A6A2FA6ACCB016C2582EA14B4FB9A9622C386D86E18B3F4142F73DEE37321EE2178B94CFCA78935CFEA0DFE04FF2022ECAE8BAB7EF1ED2EFA18A675F999CEBFC586EC4A74A058E5772C547F6EE7D345B8D5BFE8D6E3B981399009E7E13492C2F6D024B5C2A87C3C1372160C06718DBD5F20C92FBED5FF9310EB1B85875DD3A6333B7B4EBD71B1AC6F4DB5B576F5E6B04787F4D51DF623F2BBB19049AC59C8E701E3F8640A89D6BF844408E46E424616CE8B98DBACDED3D36F91DB452FCCE9B0164D5E2B48E4184656B43D3AF3397D4C46D53868F29AF0E6295C6B803292EEBE7A91E1A729843D6DE22FB01FE748CA
|
||||
tmp_aes_key = C43503B78CE1A7EBA3BE3378B41644235F348455FD4004A102BAF4AB1E3DDE11
|
||||
tmp_aes_iv = 43FA1673796D54629C3BECDC6C69C67115AB10D7261D57C3C94258F133D0B6D0</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 4F41A8F58B280F61F9863375C4A4600B8026DA08BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010061DEE10F675855ACEFA2B2CA3A0D3354652CB75AD6A4D7CF83F8C62E667ACCA6F039DBA4E8B692A7441CC327A6E7ECF65ECE1F383DE9AB38A7439AE73EC90B02A824F1D64C9FA19C057875AF619621147B5B05A0DB1B0B27A74070C45E30042D2AA455DFA899DFA163C5E0F42F90C94F5BD2E4F689D42EBD1ABF7AB843DEBA27C14060ABCAF569D5B517444B900B1428C8986E46F4985C30C50CEC973F6C2A91AE8EE830E9F4931E84D237872700E547A2424BFDFA35D897ACDD78B6B137A5FCE31FD5A3228575204798E40CD545D309EB82222F3C9EA9568ABF70A5209CF379AC9B1669D6708938A47161F1FE51C48014183D2354953CC6897175B60AC1F191A4F97065B17BBA6E0D1ADED0
|
||||
answer = BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010061DEE10F675855ACEFA2B2CA3A0D3354652CB75AD6A4D7CF83F8C62E667ACCA6F039DBA4E8B692A7441CC327A6E7ECF65ECE1F383DE9AB38A7439AE73EC90B02A824F1D64C9FA19C057875AF619621147B5B05A0DB1B0B27A74070C45E30042D2AA455DFA899DFA163C5E0F42F90C94F5BD2E4F689D42EBD1ABF7AB843DEBA27C14060ABCAF569D5B517444B900B1428C8986E46F4985C30C50CEC973F6C2A91AE8EE830E9F4931E84D237872700E547A2424BFDFA35D897ACDD78B6B137A5FCE31FD5A3228575204798E40CD545D309EB82222F3C9EA9568ABF70A5209CF379AC9B1669D6708938A47161F1FE51C48014183D2354953CC6897175B60AC1F191A4F97065B17BBA6E0D1ADED0</code></pre>
|
||||
<pre><code>answer_with_hash = FCBA013B9AB7707DDBE474642264DF8C59D8184ABA0D89B5A0C36E98B7E16B63D0EFD6D1F33D8613A200C9D374629E4CD58D798CFFAC07F803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100787D5C24EF82C26B88AF34F63D7A6E68151281F9260D9670912BA1E1AE33E2841B5BFDA596A1D5EB7554E8D96716488CDF59FF4699597177E45C48AC1FFE29E63BD236FFC56223D0A5FCC3CAC21C93AA0EF1CA814D16729473A971DFBB6DC947A2DFF7E2DA1B55940CFED7A7080B3A5DE6D8C302F399617AD8BF12049852C2DCDC81B065461EC6106A2EF863283E1C79E8500BAE42B0B07773829BCAFF84FC70EED906615803FBD4940FDC0274939CD9D1797FC84B7685BB7CAF4F45FE50161079A448EF61C9104FDDBAAF0C191A4FA3A1EEB5C9C21AC28161CC439B3666E7FEB2D8D441601974665887C289DB016D81886EB9491001AF054383A02AF682FC2DB73072658886A4B98ACDD2B4
|
||||
answer = BA0D89B5A0C36E98B7E16B63D0EFD6D1F33D8613A200C9D374629E4CD58D798CFFAC07F803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100787D5C24EF82C26B88AF34F63D7A6E68151281F9260D9670912BA1E1AE33E2841B5BFDA596A1D5EB7554E8D96716488CDF59FF4699597177E45C48AC1FFE29E63BD236FFC56223D0A5FCC3CAC21C93AA0EF1CA814D16729473A971DFBB6DC947A2DFF7E2DA1B55940CFED7A7080B3A5DE6D8C302F399617AD8BF12049852C2DCDC81B065461EC6106A2EF863283E1C79E8500BAE42B0B07773829BCAFF84FC70EED906615803FBD4940FDC0274939CD9D1797FC84B7685BB7CAF4F45FE50161079A448EF61C9104FDDBAAF0C191A4FA3A1EEB5C9C21AC28161CC439B3666E7FEB2D8D441601974665887C289DB016D81886EB9491001AF054383A02AF682FC2DB73072658886A4B98ACDD2B4</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 33 5E 99 59 32 B9 7A B0 F4 99 8B 49
|
||||
0010 | 79 A9 8A B8 1D 2A 19 43 39 EB D2 05 03 B5 CB 18
|
||||
0020 | 9E DE 22 74 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 A0 C3 6E 98 B7 E1 6B 63 D0 EF D6 D1
|
||||
0010 | F3 3D 86 13 A2 00 C9 D3 74 62 9E 4C D5 8D 79 8C
|
||||
0020 | FF AC 07 F8 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 = BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227
|
|||
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 | 61 DE E1 0F 67 58 55 AC EF A2 B2 CA 3A 0D 33 54
|
||||
0140 | 65 2C B7 5A D6 A4 D7 CF 83 F8 C6 2E 66 7A CC A6
|
||||
0150 | F0 39 DB A4 E8 B6 92 A7 44 1C C3 27 A6 E7 EC F6
|
||||
0160 | 5E CE 1F 38 3D E9 AB 38 A7 43 9A E7 3E C9 0B 02
|
||||
0170 | A8 24 F1 D6 4C 9F A1 9C 05 78 75 AF 61 96 21 14
|
||||
0180 | 7B 5B 05 A0 DB 1B 0B 27 A7 40 70 C4 5E 30 04 2D
|
||||
0190 | 2A A4 55 DF A8 99 DF A1 63 C5 E0 F4 2F 90 C9 4F
|
||||
01A0 | 5B D2 E4 F6 89 D4 2E BD 1A BF 7A B8 43 DE BA 27
|
||||
01B0 | C1 40 60 AB CA F5 69 D5 B5 17 44 4B 90 0B 14 28
|
||||
01C0 | C8 98 6E 46 F4 98 5C 30 C5 0C EC 97 3F 6C 2A 91
|
||||
01D0 | AE 8E E8 30 E9 F4 93 1E 84 D2 37 87 27 00 E5 47
|
||||
01E0 | A2 42 4B FD FA 35 D8 97 AC DD 78 B6 B1 37 A5 FC
|
||||
01F0 | E3 1F D5 A3 22 85 75 20 47 98 E4 0C D5 45 D3 09
|
||||
0200 | EB 82 22 2F 3C 9E A9 56 8A BF 70 A5 20 9C F3 79
|
||||
0210 | AC 9B 16 69 D6 70 89 38 A4 71 61 F1 FE 51 C4 80
|
||||
0220 | 14 18 3D 23 54 95 3C C6 89 71 75 B6 0A C1 F1 91
|
||||
0230 | A4 F9 70 65</code></pre>
|
||||
0130 | 78 7D 5C 24 EF 82 C2 6B 88 AF 34 F6 3D 7A 6E 68
|
||||
0140 | 15 12 81 F9 26 0D 96 70 91 2B A1 E1 AE 33 E2 84
|
||||
0150 | 1B 5B FD A5 96 A1 D5 EB 75 54 E8 D9 67 16 48 8C
|
||||
0160 | DF 59 FF 46 99 59 71 77 E4 5C 48 AC 1F FE 29 E6
|
||||
0170 | 3B D2 36 FF C5 62 23 D0 A5 FC C3 CA C2 1C 93 AA
|
||||
0180 | 0E F1 CA 81 4D 16 72 94 73 A9 71 DF BB 6D C9 47
|
||||
0190 | A2 DF F7 E2 DA 1B 55 94 0C FE D7 A7 08 0B 3A 5D
|
||||
01A0 | E6 D8 C3 02 F3 99 61 7A D8 BF 12 04 98 52 C2 DC
|
||||
01B0 | DC 81 B0 65 46 1E C6 10 6A 2E F8 63 28 3E 1C 79
|
||||
01C0 | E8 50 0B AE 42 B0 B0 77 73 82 9B CA FF 84 FC 70
|
||||
01D0 | EE D9 06 61 58 03 FB D4 94 0F DC 02 74 93 9C D9
|
||||
01E0 | D1 79 7F C8 4B 76 85 BB 7C AF 4F 45 FE 50 16 10
|
||||
01F0 | 79 A4 48 EF 61 C9 10 4F DD BA AF 0C 19 1A 4F A3
|
||||
0200 | A1 EE B5 C9 C2 1A C2 81 61 CC 43 9B 36 66 E7 FE
|
||||
0210 | B2 D8 D4 41 60 19 74 66 58 87 C2 89 DB 01 6D 81
|
||||
0220 | 88 6E B9 49 10 01 AF 05 43 83 A0 2A F6 82 FC 2D
|
||||
0230 | B7 30 72 65</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -570,13 +570,13 @@ answer = BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE00010061DEE10F675855ACEFA2B2CA</code> <code>3A0D3354652CB75AD6A4D7CF83F8C62E</code> <code>667ACCA6F039DBA4E8B692A7441CC327</code> <code>A6E7ECF65ECE1F383DE9AB38A7439AE7</code> <code>3EC90B02A824F1D64C9FA19C057875AF</code> <code>619621147B5B05A0DB1B0B27A74070C4</code> <code>5E30042D2AA455DFA899DFA163C5E0F4</code> <code>2F90C94F5BD2E4F689D42EBD1ABF7AB8</code> <code>43DEBA27C14060ABCAF569D5B517444B</code> <code>900B1428C8986E46F4985C30C50CEC97</code> <code>3F6C2A91AE8EE830E9F4931E84D23787</code> <code>2700E547A2424BFDFA35D897ACDD78B6</code> <code>B137A5FCE31FD5A3228575204798E40C</code> <code>D545D309EB82222F3C9EA9568ABF70A5</code> <code>209CF379AC9B1669D6708938A47161F1</code> <code>FE51C48014183D2354953CC6897175B6</code><br> <code>0AC1F191</code></td>
|
||||
<td><code>FE000100787D5C24EF82C26B88AF34F6</code> <code>3D7A6E68151281F9260D9670912BA1E1</code> <code>AE33E2841B5BFDA596A1D5EB7554E8D9</code> <code>6716488CDF59FF4699597177E45C48AC</code> <code>1FFE29E63BD236FFC56223D0A5FCC3CA</code> <code>C21C93AA0EF1CA814D16729473A971DF</code> <code>BB6DC947A2DFF7E2DA1B55940CFED7A7</code> <code>080B3A5DE6D8C302F399617AD8BF1204</code> <code>9852C2DCDC81B065461EC6106A2EF863</code> <code>283E1C79E8500BAE42B0B07773829BCA</code> <code>FF84FC70EED906615803FBD4940FDC02</code> <code>74939CD9D1797FC84B7685BB7CAF4F45</code> <code>FE50161079A448EF61C9104FDDBAAF0C</code> <code>191A4FA3A1EEB5C9C21AC28161CC439B</code> <code>3666E7FEB2D8D441601974665887C289</code> <code>DB016D81886EB9491001AF054383A02A</code><br> <code>F682FC2D</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>A4F97065</code> (1701902756 in decimal)</td>
|
||||
<td><code>B7307265</code> (1701982391 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227
|
|||
<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 = 63CC5ECAEEEBD95B30776FD9AA8B616AD00CF1C6A68EB385433B30B9A15127F9402790A5F9E682AEB58F93D025B2F68989336B717B6EF35F648ABC8AC9D74491F287E05F0E598B2F37903063EE8982FD504F1C55E8852ECF511D80A5DB28E355A37490520AF3D941B790F6F29B4CF38EAE7D34B3CC87261C89706DF7D12758CD85E08DBFF2E2092319F53D37B623EB67941D00C743C46B4D61EAED4C1278A5F6F996B2C05F680D19DC37219C72EDCCFD29FA98E28B3D56B8C8EC6E6AC54B870BAE93923B2D9044690D3CA0B01CB75A9533484676677EDA1DB1E27DEC6AB00F8623B3FFDF8A592EFB4D83B032BD98B12278A9969CA7BAF766E190858CC480C24F</code></pre>
|
||||
<pre><code>b = B5B96CBF8810CA8CC278FAC3B33EAE695E3DC385141F6A2589E4F1397EB31B945891509FB6A8BDEF35B05E81E9A53147FB4539A6B9CBDEB25E96FFABE57330FFE302DF225BE77B75B6B49A826F73D4A54E1965A272B18BE78FBA8B51D169273E896828AEC28188F849692A87AE41A17E3EB372788C12F3C94EC76A7C1304B5649EFA949BF19969AFC1717AAC02068CD898FC179B326EC7993C90B8853471397E72F3B95ADED7A59962B7EA3D4C45F8D6598E2FCE7A62CE77C3A3967479964C522622BE6AF16A9D1FFE794A4F5241909AE1374195C6C43E2983511824210D055D870EC0641618808685B7D41C6D09C9D3B2CD1EC83A02DF49C7EEA78F459C6AA8</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 = 8D8BCF4B7E8CACB39C31454E2924A64BFD988D4A156175EBB0279F44E3D1FC9A142E635DCE46B2F10063EEB2AEC4BE6C041F0435D672AE4E72D9E73C87DF37245BE30C3008AEA1306062C60CF5299AFD9A06C9E03EA758CD2E627D65499E4D5F44A3D81AD4222EE77C04B0B4D776F69D2C3B5292C220B4415530B3C5BE6A8837B7F3C324AABBE97952958E2E66D36465AA52A7B47F3A1013387D024DFE924046F2E9AA1BEB1D730FB3F433558ADE52758AC7C307AEE0AA9623570836B922B650E0B1C295EC500007A6B9032D3CDD10B8EE065B2D4A962F518EA46C6897CBA5B36411A61FB826EE6FA48AC9CD4DDF59A9E7BADCEC44BA470C6BAC78354F3CEC0C</code></pre>
|
||||
<pre><code>g_b = 34EBAF3B575322E9B23E98F62E7FEB0C141D12A31DFCC37C2F10C096320161860252CC12767D4487F5BB1DFFB39E3956C33F3C02FA13853A32EDD9F35237A3A45D80D56AEAAD943775FC5E262D632A838C3B8A1FAB9A90F29CC6E697E729B6E740DCEE3839EBA8B2372389ABFE706FB6D407839921FE2E457DE4BC932F37E32F89F63B0B4A0D4092935E1F92CE311047E523CE0A7C8ECB011F1F7D9C7EFD9E9978460845F8F76451E178857278B1D95E67018AB1FAC1544D58F0F6CBC9B83051D16220220455C734F362DE3DDBFDC865F161722E9771EC66A6EE4F1BAB3F65378C8423E178A2AB7FCC8DC3DC93793E04CEEC9C54C31F2E710C9AA7B1195137C5</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 33 5E 99 59 32 B9 7A B0 F4 99 8B 49
|
||||
0010 | 79 A9 8A B8 1D 2A 19 43 39 EB D2 05 03 B5 CB 18
|
||||
0020 | 9E DE 22 74 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 8D 8B CF 4B 7E 8C AC B3 9C 31 45 4E 29 24 A6 4B
|
||||
0040 | FD 98 8D 4A 15 61 75 EB B0 27 9F 44 E3 D1 FC 9A
|
||||
0050 | 14 2E 63 5D CE 46 B2 F1 00 63 EE B2 AE C4 BE 6C
|
||||
0060 | 04 1F 04 35 D6 72 AE 4E 72 D9 E7 3C 87 DF 37 24
|
||||
0070 | 5B E3 0C 30 08 AE A1 30 60 62 C6 0C F5 29 9A FD
|
||||
0080 | 9A 06 C9 E0 3E A7 58 CD 2E 62 7D 65 49 9E 4D 5F
|
||||
0090 | 44 A3 D8 1A D4 22 2E E7 7C 04 B0 B4 D7 76 F6 9D
|
||||
00A0 | 2C 3B 52 92 C2 20 B4 41 55 30 B3 C5 BE 6A 88 37
|
||||
00B0 | B7 F3 C3 24 AA BB E9 79 52 95 8E 2E 66 D3 64 65
|
||||
00C0 | AA 52 A7 B4 7F 3A 10 13 38 7D 02 4D FE 92 40 46
|
||||
00D0 | F2 E9 AA 1B EB 1D 73 0F B3 F4 33 55 8A DE 52 75
|
||||
00E0 | 8A C7 C3 07 AE E0 AA 96 23 57 08 36 B9 22 B6 50
|
||||
00F0 | E0 B1 C2 95 EC 50 00 07 A6 B9 03 2D 3C DD 10 B8
|
||||
0100 | EE 06 5B 2D 4A 96 2F 51 8E A4 6C 68 97 CB A5 B3
|
||||
0110 | 64 11 A6 1F B8 26 EE 6F A4 8A C9 CD 4D DF 59 A9
|
||||
0120 | E7 BA DC EC 44 BA 47 0C 6B AC 78 35 4F 3C EC 0C</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 A0 C3 6E 98 B7 E1 6B 63 D0 EF D6 D1
|
||||
0010 | F3 3D 86 13 A2 00 C9 D3 74 62 9E 4C D5 8D 79 8C
|
||||
0020 | FF AC 07 F8 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 34 EB AF 3B 57 53 22 E9 B2 3E 98 F6 2E 7F EB 0C
|
||||
0040 | 14 1D 12 A3 1D FC C3 7C 2F 10 C0 96 32 01 61 86
|
||||
0050 | 02 52 CC 12 76 7D 44 87 F5 BB 1D FF B3 9E 39 56
|
||||
0060 | C3 3F 3C 02 FA 13 85 3A 32 ED D9 F3 52 37 A3 A4
|
||||
0070 | 5D 80 D5 6A EA AD 94 37 75 FC 5E 26 2D 63 2A 83
|
||||
0080 | 8C 3B 8A 1F AB 9A 90 F2 9C C6 E6 97 E7 29 B6 E7
|
||||
0090 | 40 DC EE 38 39 EB A8 B2 37 23 89 AB FE 70 6F B6
|
||||
00A0 | D4 07 83 99 21 FE 2E 45 7D E4 BC 93 2F 37 E3 2F
|
||||
00B0 | 89 F6 3B 0B 4A 0D 40 92 93 5E 1F 92 CE 31 10 47
|
||||
00C0 | E5 23 CE 0A 7C 8E CB 01 1F 1F 7D 9C 7E FD 9E 99
|
||||
00D0 | 78 46 08 45 F8 F7 64 51 E1 78 85 72 78 B1 D9 5E
|
||||
00E0 | 67 01 8A B1 FA C1 54 4D 58 F0 F6 CB C9 B8 30 51
|
||||
00F0 | D1 62 20 22 04 55 C7 34 F3 62 DE 3D DB FD C8 65
|
||||
0100 | F1 61 72 2E 97 71 EC 66 A6 EE 4F 1B AB 3F 65 37
|
||||
0110 | 8C 84 23 E1 78 A2 AB 7F CC 8D C3 DC 93 79 3E 04
|
||||
0120 | CE EC 9C 54 C3 1F 2E 71 0C 9A A7 B1 19 51 37 C5</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 = BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001008D8BCF4B7E8CACB39C31454E</code> <code>2924A64BFD988D4A156175EBB0279F44</code> <code>E3D1FC9A142E635DCE46B2F10063EEB2</code> <code>AEC4BE6C041F0435D672AE4E72D9E73C</code> <code>87DF37245BE30C3008AEA1306062C60C</code> <code>F5299AFD9A06C9E03EA758CD2E627D65</code> <code>499E4D5F44A3D81AD4222EE77C04B0B4</code> <code>D776F69D2C3B5292C220B4415530B3C5</code> <code>BE6A8837B7F3C324AABBE97952958E2E</code> <code>66D36465AA52A7B47F3A1013387D024D</code> <code>FE924046F2E9AA1BEB1D730FB3F43355</code> <code>8ADE52758AC7C307AEE0AA9623570836</code> <code>B922B650E0B1C295EC500007A6B9032D</code> <code>3CDD10B8EE065B2D4A962F518EA46C68</code> <code>97CBA5B36411A61FB826EE6FA48AC9CD</code> <code>4DDF59A9E7BADCEC44BA470C6BAC7835</code><br> <code>4F3CEC0C</code></td>
|
||||
<td><code>FE00010034EBAF3B575322E9B23E98F6</code> <code>2E7FEB0C141D12A31DFCC37C2F10C096</code> <code>320161860252CC12767D4487F5BB1DFF</code> <code>B39E3956C33F3C02FA13853A32EDD9F3</code> <code>5237A3A45D80D56AEAAD943775FC5E26</code> <code>2D632A838C3B8A1FAB9A90F29CC6E697</code> <code>E729B6E740DCEE3839EBA8B2372389AB</code> <code>FE706FB6D407839921FE2E457DE4BC93</code> <code>2F37E32F89F63B0B4A0D4092935E1F92</code> <code>CE311047E523CE0A7C8ECB011F1F7D9C</code> <code>7EFD9E9978460845F8F76451E1788572</code> <code>78B1D95E67018AB1FAC1544D58F0F6CB</code> <code>C9B83051D16220220455C734F362DE3D</code> <code>DBFDC865F161722E9771EC66A6EE4F1B</code> <code>AB3F65378C8423E178A2AB7FCC8DC3DC</code> <code>93793E04CEEC9C54C31F2E710C9AA7B1</code><br> <code>195137C5</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 = BA0D89B5335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE227
|
|||
<!-- 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 = 54B64366335E995932B97AB0F4998B4979A98AB81D2A194339EBD20503B5CB189EDE22740000000000000000FE0001008D8BCF4B7E8CACB39C31454E2924A64BFD988D4A156175EBB0279F44E3D1FC9A142E635DCE46B2F10063EEB2AEC4BE6C041F0435D672AE4E72D9E73C87DF37245BE30C3008AEA1306062C60CF5299AFD9A06C9E03EA758CD2E627D65499E4D5F44A3D81AD4222EE77C04B0B4D776F69D2C3B5292C220B4415530B3C5BE6A8837B7F3C324AABBE97952958E2E66D36465AA52A7B47F3A1013387D024DFE924046F2E9AA1BEB1D730FB3F433558ADE52758AC7C307AEE0AA9623570836B922B650E0B1C295EC500007A6B9032D3CDD10B8EE065B2D4A962F518EA46C6897CBA5B36411A61FB826EE6FA48AC9CD4DDF59A9E7BADCEC44BA470C6BAC78354F3CEC0C
|
||||
padding = 33608B65B675EDEB574612F3
|
||||
tmp_aes_key = 9A4E3B9FFC93395AEF3A1A3D980C65B346AD55239764095BCE4CE82EF7D7B188
|
||||
tmp_aes_iv = 080199AE9E1B3CB91C6AECDD853F64F0A82A203CC088FA0F2D8F19D71688B570</code></pre>
|
||||
<pre><code>data = 54B64366A0C36E98B7E16B63D0EFD6D1F33D8613A200C9D374629E4CD58D798CFFAC07F80000000000000000FE00010034EBAF3B575322E9B23E98F62E7FEB0C141D12A31DFCC37C2F10C096320161860252CC12767D4487F5BB1DFFB39E3956C33F3C02FA13853A32EDD9F35237A3A45D80D56AEAAD943775FC5E262D632A838C3B8A1FAB9A90F29CC6E697E729B6E740DCEE3839EBA8B2372389ABFE706FB6D407839921FE2E457DE4BC932F37E32F89F63B0B4A0D4092935E1F92CE311047E523CE0A7C8ECB011F1F7D9C7EFD9E9978460845F8F76451E178857278B1D95E67018AB1FAC1544D58F0F6CBC9B83051D16220220455C734F362DE3DDBFDC865F161722E9771EC66A6EE4F1BAB3F65378C8423E178A2AB7FCC8DC3DC93793E04CEEC9C54C31F2E710C9AA7B1195137C5
|
||||
padding = A5FCB431195245CEB68A6AC9
|
||||
tmp_aes_key = C43503B78CE1A7EBA3BE3378B41644235F348455FD4004A102BAF4AB1E3DDE11
|
||||
tmp_aes_iv = 43FA1673796D54629C3BECDC6C69C67115AB10D7261D57C3C94258F133D0B6D0</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 = E938CDA17FCE9A820D24122C19BFEED33DBA6CB395EA0F4759590F95AF2FCD55BCD8F63083DABE9D16967CC1B452B0ED9D5091FF0F3EA9E17238D8963D6DA168E43BB6C0532CB78F8ECB32F090752D81EB51DD609BF573E7E69F99FDAD0EFCDF98233261403D91FB9D9BBC599B97F0549FCD00D4B97495284836BB0B57F8AE87CB406EF0FB61FCCADAF34275400D36FFE12D7F194D2571CCC4CF60415A54ED0FA91C14B12F5B38217B041D3CA397AD9BEE46D19CC9A0B4BDEEC487586C9BD8D84D3AE7E5DB284233BFF5B15A1404DFB9756A277ECB218C22C5575CCE58F3A10A85ADD9A49C65CFC1D22BB2A9242FC119C1CBC6BC8DED37B2C67AB0B0DCC39C885067AD502891449410C37402D129528F5ECA6F60C170F91709D10A538D9568F816E14923E319D59E413558619EC7CB5648428C8475097941C0E35D50F039620DB8260D430AE5BDA4823798D3EB8F5FCF</code></pre>
|
||||
<pre><code>encrypted_data = FD8F7BAAC2C118D4A3C056D052DD15D5D6C5FCF9DB2DB2964E13E778D97E461C9EE9047A439FA0391F34569FEE912E9EDFF00C96509732C8559F98F0619C6A4F86A84570F2520D0FF4D76D1694C08EE42E11680CDB4DD08AEF19C48708C95D57DAB4AEA22B6843224AC6F5134C3EEFAE5F52A749AEA5B00D1A9D1A94BEE455E9BFD320DCDDA66905F3300FEB1592D1FFF3434AC2DD002A687ACBE61FDAEA95395CB92493BFF4CDC41A7857FEA2D0EEAFF1E71FEFBE10BCB36A9E1B11EBBA10F5818138EB53F05A31A27680B3320E92278A6F22712503FDDAB962D5FB6756A5189BF50524640225B92E70BCF649D6A2797DE4E2E375B99830CB5F32A93A9C82593A974B62C440D2EA357FD0636C471E61B719B9902A32087AC042ACC68FAC8D424E98B9352DB233209E3A5141DAFDAFAFC2DB6A605730E0D17880E8A96214EA9E21F73ED176816EED97EFE8451ED08521</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 50 D4 0C 00 A4 F9 70 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 33 5E 99 59 32 B9 7A B0
|
||||
0020 | F4 99 8B 49 79 A9 8A B8 1D 2A 19 43 39 EB D2 05
|
||||
0030 | 03 B5 CB 18 9E DE 22 74 FE 50 01 00 E9 38 CD A1
|
||||
0040 | 7F CE 9A 82 0D 24 12 2C 19 BF EE D3 3D BA 6C B3
|
||||
0050 | 95 EA 0F 47 59 59 0F 95 AF 2F CD 55 BC D8 F6 30
|
||||
0060 | 83 DA BE 9D 16 96 7C C1 B4 52 B0 ED 9D 50 91 FF
|
||||
0070 | 0F 3E A9 E1 72 38 D8 96 3D 6D A1 68 E4 3B B6 C0
|
||||
0080 | 53 2C B7 8F 8E CB 32 F0 90 75 2D 81 EB 51 DD 60
|
||||
0090 | 9B F5 73 E7 E6 9F 99 FD AD 0E FC DF 98 23 32 61
|
||||
00A0 | 40 3D 91 FB 9D 9B BC 59 9B 97 F0 54 9F CD 00 D4
|
||||
00B0 | B9 74 95 28 48 36 BB 0B 57 F8 AE 87 CB 40 6E F0
|
||||
00C0 | FB 61 FC CA DA F3 42 75 40 0D 36 FF E1 2D 7F 19
|
||||
00D0 | 4D 25 71 CC C4 CF 60 41 5A 54 ED 0F A9 1C 14 B1
|
||||
00E0 | 2F 5B 38 21 7B 04 1D 3C A3 97 AD 9B EE 46 D1 9C
|
||||
00F0 | C9 A0 B4 BD EE C4 87 58 6C 9B D8 D8 4D 3A E7 E5
|
||||
0100 | DB 28 42 33 BF F5 B1 5A 14 04 DF B9 75 6A 27 7E
|
||||
0110 | CB 21 8C 22 C5 57 5C CE 58 F3 A1 0A 85 AD D9 A4
|
||||
0120 | 9C 65 CF C1 D2 2B B2 A9 24 2F C1 19 C1 CB C6 BC
|
||||
0130 | 8D ED 37 B2 C6 7A B0 B0 DC C3 9C 88 50 67 AD 50
|
||||
0140 | 28 91 44 94 10 C3 74 02 D1 29 52 8F 5E CA 6F 60
|
||||
0150 | C1 70 F9 17 09 D1 0A 53 8D 95 68 F8 16 E1 49 23
|
||||
0160 | E3 19 D5 9E 41 35 58 61 9E C7 CB 56 48 42 8C 84
|
||||
0170 | 75 09 79 41 C0 E3 5D 50 F0 39 62 0D B8 26 0D 43
|
||||
0180 | 0A E5 BD A4 82 37 98 D3 EB 8F 5F CF</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 14 6E 0B 00 B7 30 72 65
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 A0 C3 6E 98 B7 E1 6B 63
|
||||
0020 | D0 EF D6 D1 F3 3D 86 13 A2 00 C9 D3 74 62 9E 4C
|
||||
0030 | D5 8D 79 8C FF AC 07 F8 FE 50 01 00 FD 8F 7B AA
|
||||
0040 | C2 C1 18 D4 A3 C0 56 D0 52 DD 15 D5 D6 C5 FC F9
|
||||
0050 | DB 2D B2 96 4E 13 E7 78 D9 7E 46 1C 9E E9 04 7A
|
||||
0060 | 43 9F A0 39 1F 34 56 9F EE 91 2E 9E DF F0 0C 96
|
||||
0070 | 50 97 32 C8 55 9F 98 F0 61 9C 6A 4F 86 A8 45 70
|
||||
0080 | F2 52 0D 0F F4 D7 6D 16 94 C0 8E E4 2E 11 68 0C
|
||||
0090 | DB 4D D0 8A EF 19 C4 87 08 C9 5D 57 DA B4 AE A2
|
||||
00A0 | 2B 68 43 22 4A C6 F5 13 4C 3E EF AE 5F 52 A7 49
|
||||
00B0 | AE A5 B0 0D 1A 9D 1A 94 BE E4 55 E9 BF D3 20 DC
|
||||
00C0 | DD A6 69 05 F3 30 0F EB 15 92 D1 FF F3 43 4A C2
|
||||
00D0 | DD 00 2A 68 7A CB E6 1F DA EA 95 39 5C B9 24 93
|
||||
00E0 | BF F4 CD C4 1A 78 57 FE A2 D0 EE AF F1 E7 1F EF
|
||||
00F0 | BE 10 BC B3 6A 9E 1B 11 EB BA 10 F5 81 81 38 EB
|
||||
0100 | 53 F0 5A 31 A2 76 80 B3 32 0E 92 27 8A 6F 22 71
|
||||
0110 | 25 03 FD DA B9 62 D5 FB 67 56 A5 18 9B F5 05 24
|
||||
0120 | 64 02 25 B9 2E 70 BC F6 49 D6 A2 79 7D E4 E2 E3
|
||||
0130 | 75 B9 98 30 CB 5F 32 A9 3A 9C 82 59 3A 97 4B 62
|
||||
0140 | C4 40 D2 EA 35 7F D0 63 6C 47 1E 61 B7 19 B9 90
|
||||
0150 | 2A 32 08 7A C0 42 AC C6 8F AC 8D 42 4E 98 B9 35
|
||||
0160 | 2D B2 33 20 9E 3A 51 41 DA FD AF AF C2 DB 6A 60
|
||||
0170 | 57 30 E0 D1 78 80 E8 A9 62 14 EA 9E 21 F7 3E D1
|
||||
0180 | 76 81 6E ED 97 EF E8 45 1E D0 85 21</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>50D40C00A4F97065</code></td>
|
||||
<td><code>146E0B00B7307265</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>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100E938CDA17FCE9A820D24122C</code> <code>19BFEED33DBA6CB395EA0F4759590F95</code> <code>AF2FCD55BCD8F63083DABE9D16967CC1</code> <code>B452B0ED9D5091FF0F3EA9E17238D896</code> <code>3D6DA168E43BB6C0532CB78F8ECB32F0</code> <code>90752D81EB51DD609BF573E7E69F99FD</code> <code>AD0EFCDF98233261403D91FB9D9BBC59</code> <code>9B97F0549FCD00D4B97495284836BB0B</code> <code>57F8AE87CB406EF0FB61FCCADAF34275</code> <code>400D36FFE12D7F194D2571CCC4CF6041</code> <code>5A54ED0FA91C14B12F5B38217B041D3C</code> <code>A397AD9BEE46D19CC9A0B4BDEEC48758</code> <code>6C9BD8D84D3AE7E5DB284233BFF5B15A</code> <code>1404DFB9756A277ECB218C22C5575CCE</code> <code>58F3A10A85ADD9A49C65CFC1D22BB2A9</code> <code>242FC119C1CBC6BC8DED37B2C67AB0B0</code> <code>DCC39C885067AD502891449410C37402</code> <code>D129528F5ECA6F60C170F91709D10A53</code> <code>8D9568F816E14923E319D59E41355861</code> <code>9EC7CB5648428C8475097941C0E35D50</code> <code>F039620DB8260D430AE5BDA4823798D3</code><br> <code>EB8F5FCF</code></td>
|
||||
<td><code>FE500100FD8F7BAAC2C118D4A3C056D0</code> <code>52DD15D5D6C5FCF9DB2DB2964E13E778</code> <code>D97E461C9EE9047A439FA0391F34569F</code> <code>EE912E9EDFF00C96509732C8559F98F0</code> <code>619C6A4F86A84570F2520D0FF4D76D16</code> <code>94C08EE42E11680CDB4DD08AEF19C487</code> <code>08C95D57DAB4AEA22B6843224AC6F513</code> <code>4C3EEFAE5F52A749AEA5B00D1A9D1A94</code> <code>BEE455E9BFD320DCDDA66905F3300FEB</code> <code>1592D1FFF3434AC2DD002A687ACBE61F</code> <code>DAEA95395CB92493BFF4CDC41A7857FE</code> <code>A2D0EEAFF1E71FEFBE10BCB36A9E1B11</code> <code>EBBA10F5818138EB53F05A31A27680B3</code> <code>320E92278A6F22712503FDDAB962D5FB</code> <code>6756A5189BF50524640225B92E70BCF6</code> <code>49D6A2797DE4E2E375B99830CB5F32A9</code> <code>3A9C82593A974B62C440D2EA357FD063</code> <code>6C471E61B719B9902A32087AC042ACC6</code> <code>8FAC8D424E98B9352DB233209E3A5141</code> <code>DAFDAFAFC2DB6A605730E0D17880E8A9</code> <code>6214EA9E21F73ED176816EED97EFE845</code><br> <code>1ED08521</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 = A4230DDD3A80A925774E23CFB272A8C4B6CD40C989561A6E8397B01785D9367B3B21A75155B3ADE1D2292ACB565A635AC34FBD077CE68C71A8E5B8AD494655916B3BF1941F51EB1E75122648BB1587CD18D570187902BA47EB5DBA8EA3D63243FFE8431EC4C0AB4DE7AE26CDE9E2D1D946BEEA55DDAC2730CC89BE17F68295ABD5906EC873EA7566FA0E8B734DA862B0F6AB876796A9F36C2DB2654288EEE2032CDAAF6AC156FFA5004DDB377E3D8E0659079DFA41D622935C1E36B897EE2F571503A8EA19F6B2E0AC31D18FC09AA7E8727531008F77B5A91DFE2540CE236F27177113E7B2B865B9F9BD90483D36E836938621D69AA9B66217FE2306B56408F0</code></pre>
|
||||
<pre><code>auth_key = 8498598427CEA30CC2F796C90015E1BA0A188E68121D4FF77F785F247CE7F75023C4F9EDA6DEA3A54000D244F12E32E8A0F9D6F28C2A428CE2B7BB94C064DA2C49B237F086FF898E2CCE6FD5DA226377017C4C59DA109783FB304C0D4D5CA19A53D555CA8821BC0CD9624D7C4D1EB713EF37518BE7847B18E91B9E3C16A6BC7569780A74725A9DA1EB8BEED5EB1707A9BA6DA9778AB7D201EAB13F3D896389A6C14930D306E6874D162FAB2EB44B40673145ECAF256F8244C84FF72906931A702B086312D7F3E516E9DCDA1DE35A5672F0D8365F8AA6C7200FA67393CCE47B9B4A48DF1C0F9FC834E5A0EAEC1C71DFB64000165F75A14D5E60E45DAD68B7269F</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 74 C3 A2 A4 F9 70 65
|
||||
0010 | 6C 00 00 00 34 F7 CB 3B 33 5E 99 59 32 B9 7A B0
|
||||
0020 | F4 99 8B 49 79 A9 8A B8 1D 2A 19 43 39 EB D2 05
|
||||
0030 | 03 B5 CB 18 9E DE 22 74 EE 44 DE 65 D0 70 EE 2F
|
||||
0040 | 4A 60 F9 09 59 D9 15 C9</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 E4 64 B0 B7 30 72 65
|
||||
0010 | 48 00 00 00 34 F7 CB 3B A0 C3 6E 98 B7 E1 6B 63
|
||||
0020 | D0 EF D6 D1 F3 3D 86 13 A2 00 C9 D3 74 62 9E 4C
|
||||
0030 | D5 8D 79 8C FF AC 07 F8 29 6A E8 21 B8 42 78 09
|
||||
0040 | 79 60 F1 28 07 16 8D BB</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>0174C3A2A4F97065</code></td>
|
||||
<td><code>01E464B0B7307265</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>6C000000</code> (108 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>335E995932B97AB0F4998B4979A98AB8</code></td>
|
||||
<td><code>A0C36E98B7E16B63D0EFD6D1F33D8613</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>1D2A194339EBD20503B5CB189EDE2274</code></td>
|
||||
<td><code>A200C9D374629E4CD58D798CFFAC07F8</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>EE44DE65D070EE2F4A60F90959D915C9</code></td>
|
||||
<td><code>296AE821B84278097960F12807168DBB</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