Update content of files

This commit is contained in:
GitHub Action 2023-12-04 22:44:45 +00:00
parent 4a999e3084
commit 46c5ba755e
14 changed files with 383 additions and 292 deletions

View file

@ -165,6 +165,52 @@
<ul>
<li>Removed messageEntityBlockquote</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_STORY</a> - <code>{1} shared a story</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_STORY</a> - <code>{1} shared a story to the group</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_STORY</a> - <code>{1} shared a story with you</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_STORY_MENTION</a> - <code>mentioned you in a story</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">STORY_HIDDEN_AUTHOR</a> - ``</li>
<li>Added <a href="/api/push-updates#possible-notifications">STORY_NOTEXT</a> - <code>posted a story</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}: {3} to your voice message in {2}</code> to <code>{3} to your voice message in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_AUDIO</a></li>
<li>Changed template from <code>{1}: {3} to your contact {4} in {2}</code> to <code>{3} to your contact {4} in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_CONTACT</a></li>
<li>Changed template from <code>{1}: {3} to your file in {2}</code> to <code>{3} to your file in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_DOC</a></li>
<li>Changed template from <code>{1}: {3} to your game in {2}</code> to <code>{3} to your game in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_GAME</a></li>
<li>Changed template from <code>{1}: {3} to your map in {2}</code> to <code>{3} to your map in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_GEO</a></li>
<li>Changed template from <code>{1}: {3} to your live location in {2}</code> to <code>{3} to your live location in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_GEOLIVE</a></li>
<li>Changed template from <code>{1}: {3} to your GIF in {2}</code> to <code>{1} is calling you!</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_GIF</a></li>
<li>Changed template from <code>{1}: {3} to your invoice in {2}</code> to <code>{3} to your invoice in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_INVOICE</a></li>
<li>Changed template from <code>{1}: {3} to your message in {2}</code> to <code>{3} to your message in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_NOTEXT</a></li>
<li>Changed template from <code>{1}: {3} to your photo in {2}</code> to <code>{3} to your photo in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_PHOTO</a></li>
<li>Changed template from <code>{1}: {3} to your poll {4} in {2}</code> to <code>{3} to your poll {4} in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_POLL</a></li>
<li>Changed template from <code>{1}: {3} to your quiz {4} in {2}</code> to <code>{3} to your quiz {4} in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_QUIZ</a></li>
<li>Changed template from <code>{1}: {3} to your video message in {2}</code> to <code>{3} to your video message in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_ROUND</a></li>
<li>Changed template from <code>{1}: {3} to your {4} sticker in {2}</code> to <code>{3} to your {4} sticker in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_STICKER</a></li>
<li>Changed template from <code>{1}: {3} in {2} to your "{4}"</code> to <code>{3} in {2} to your "{4}"</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_TEXT</a></li>
<li>Changed template from <code>{1}: {3} to your video in {2}</code> to <code>{3} to your video in {2}</code> in <a href="/api/push-updates#possible-notifications">CHAT_REACT_VIDEO</a></li>
<li>Changed template from <code>You were charged {2} by {1}</code> to <code>{1} were charged {2}</code> in <a href="/api/push-updates#possible-notifications">MESSAGE_RECURRING_PAY</a></li>
<li>Changed template from <code>{1}: {2} to your voice message</code> to <code>{2} to your voice message</code> in <a href="/api/push-updates#possible-notifications">REACT_AUDIO</a></li>
<li>Changed template from <code>{1}: {2} to your contact {3}</code> to <code>{2} to your contact {3}</code> in <a href="/api/push-updates#possible-notifications">REACT_CONTACT</a></li>
<li>Changed template from <code>{1}: {2} to your file</code> to <code>{2} to your file</code> in <a href="/api/push-updates#possible-notifications">REACT_DOC</a></li>
<li>Changed template from <code>{1}: {2} to your game</code> to <code>{2} to your game</code> in <a href="/api/push-updates#possible-notifications">REACT_GAME</a></li>
<li>Changed template from <code>{1}: {2} to your map</code> to <code>{2} to your map</code> in <a href="/api/push-updates#possible-notifications">REACT_GEO</a></li>
<li>Changed template from <code>{1}: {2} to your live location</code> to <code>{2} to your live location</code> in <a href="/api/push-updates#possible-notifications">REACT_GEOLIVE</a></li>
<li>Changed template from <code>{1}: {2} to your GIF</code> to <code>{2} to your GIF</code> in <a href="/api/push-updates#possible-notifications">REACT_GIF</a></li>
<li>Changed template from <code>{1}: {2} to your invoice</code> to <code>{2} to your invoice</code> in <a href="/api/push-updates#possible-notifications">REACT_INVOICE</a></li>
<li>Changed template from <code>{1}: {2} to your message</code> to <code>{2} to your message</code> in <a href="/api/push-updates#possible-notifications">REACT_NOTEXT</a></li>
<li>Changed template from <code>{1}: {2} to your photo</code> to <code>{2} to your photo</code> in <a href="/api/push-updates#possible-notifications">REACT_PHOTO</a></li>
<li>Changed template from <code>{1}: {2} to your poll {3}</code> to <code>{2} to your poll {3}</code> in <a href="/api/push-updates#possible-notifications">REACT_POLL</a></li>
<li>Changed template from <code>{1}: {2} to your quiz {3}</code> to <code>{2} to your quiz {3}</code> in <a href="/api/push-updates#possible-notifications">REACT_QUIZ</a></li>
<li>Changed template from <code>{1}: {2} to your video message</code> to <code>{2} to your video message</code> in <a href="/api/push-updates#possible-notifications">REACT_ROUND</a></li>
<li>Changed template from <code>{1}: {2} to your {3} sticker</code> to <code>{2} to your {3} sticker</code> in <a href="/api/push-updates#possible-notifications">REACT_STICKER</a></li>
<li>Changed template from <code>{1}: {2} to your "{3}"</code> to <code>{2} to your "{3}"</code> in <a href="/api/push-updates#possible-notifications">REACT_TEXT</a></li>
<li>Changed template from <code>{1}: {2} to your video</code> to <code>{2} to your video</code> in <a href="/api/push-updates#possible-notifications">REACT_VIDEO</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/dialog">dialog</a>#d58a08c6 flags:<a href="/type/%23">#</a> pinned:flags.2?<a href="/constructor/true">true</a> unread_mark:flags.3?<a href="/constructor/true">true</a> view_forum_as_messages:flags.6?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> top_message:<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> unread_mentions_count:<a href="/type/int">int</a> unread_reactions_count:<a href="/type/int">int</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> pts:flags.0?<a href="/type/int">int</a> draft:flags.1?<a href="/type/DraftMessage">DraftMessage</a> folder_id:flags.4?<a href="/type/int">int</a> ttl_period:flags.5?<a href="/type/int">int</a> = <a href="/type/Dialog">Dialog</a>;<br>
<a href="/constructor/inputPeerNotifySettings">inputPeerNotifySettings</a>#cacb6ae2 flags:<a href="/type/%23">#</a> show_previews:flags.0?<a href="/type/Bool">Bool</a> silent:flags.1?<a href="/type/Bool">Bool</a> mute_until:flags.2?<a href="/type/int">int</a> sound:flags.3?<a href="/type/NotificationSound">NotificationSound</a> stories_muted:flags.6?<a href="/type/Bool">Bool</a> stories_hide_sender:flags.7?<a href="/type/Bool">Bool</a> stories_sound:flags.8?<a href="/type/NotificationSound">NotificationSound</a> = <a href="/type/InputPeerNotifySettings">InputPeerNotifySettings</a>;<br>

View file

@ -64,6 +64,7 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
<li><code>10</code> - Web push (web push, see below)</li>
<li><code>11</code> - MPNS VoIP (token for microsoft push VoIP)</li>
<li><code>12</code> - Tizen (token for tizen push)</li>
<li><code>13</code> - Huawei push</li>
</ul>
<p>For <code>10</code> web push, the token must be a JSON-encoded object with the following keys:</p>
<ul>
@ -289,6 +290,11 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
<td>1. Channel name<br>2. Sticker emoji</td>
</tr>
<tr>
<td>CHANNEL_MESSAGE_STORY</td>
<td>{1} shared a story</td>
<td>1. Channel name</td>
</tr>
<tr>
<td>CHANNEL_MESSAGE_TEXT</td>
<td>{1}: {2}</td>
<td>1. Channel name<br>2. Message body</td>
@ -439,6 +445,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. Sticker emoji</td>
</tr>
<tr>
<td>CHAT_MESSAGE_STORY</td>
<td>{1} shared a story to the group</td>
<td>1. Group name</td>
</tr>
<tr>
<td>CHAT_MESSAGE_TEXT</td>
<td>{1} @ {2}: {3}</td>
<td>1. Message author<br>2. Chat name<br>3. Message body</td>
@ -460,83 +471,83 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
</tr>
<tr>
<td>CHAT_REACT_AUDIO</td>
<td>{1}: {3} to your voice message in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your voice message in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_CONTACT</td>
<td>{1}: {3} to your contact {4} in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction<br>4. Contact name</td>
<td>{3} to your contact {4} in {2}</td>
<td>2. Group name<br>3. Reaction<br>4. Contact name</td>
</tr>
<tr>
<td>CHAT_REACT_DOC</td>
<td>{1}: {3} to your file in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your file in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_GAME</td>
<td>{1}: {3} to your game in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your game in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_GEO</td>
<td>{1}: {3} to your map in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your map in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_GEOLIVE</td>
<td>{1}: {3} to your live location in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your live location in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_GIF</td>
<td>{1}: {3} to your GIF in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{1} is calling you!</td>
<td>1. User name</td>
</tr>
<tr>
<td>CHAT_REACT_INVOICE</td>
<td>{1}: {3} to your invoice in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your invoice in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_NOTEXT</td>
<td>{1}: {3} to your message in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your message in {2}</td>
<td>2. Group name<br>3. Reaction</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>
<td>{3} to your photo in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_POLL</td>
<td>{1}: {3} to your poll {4} in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction<br>4. Poll name</td>
<td>{3} to your poll {4} in {2}</td>
<td>2. Group name<br>3. Reaction<br>4. Poll name</td>
</tr>
<tr>
<td>CHAT_REACT_QUIZ</td>
<td>{1}: {3} to your quiz {4} in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction<br>4. Quiz name</td>
<td>{3} to your quiz {4} in {2}</td>
<td>2. Group name<br>3. Reaction<br>4. Quiz name</td>
</tr>
<tr>
<td>CHAT_REACT_ROUND</td>
<td>{1}: {3} to your video message in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your video message in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REACT_STICKER</td>
<td>{1}: {3} to your {4} sticker in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction<br>4. Sticker emoji</td>
<td>{3} to your {4} sticker in {2}</td>
<td>2. Group name<br>3. Reaction<br>4. Sticker emoji</td>
</tr>
<tr>
<td>CHAT_REACT_TEXT</td>
<td>{1}: {3} in {2} to your "{4}"</td>
<td>1. User name<br>2. Group name<br>3. Reaction<br>4. Message body</td>
<td>{3} in {2} to your "{4}"</td>
<td>2. Group name<br>3. Reaction<br>4. Message body</td>
</tr>
<tr>
<td>CHAT_REACT_VIDEO</td>
<td>{1}: {3} to your video in {2}</td>
<td>1. User name<br>2. Group name<br>3. Reaction</td>
<td>{3} to your video in {2}</td>
<td>2. Group name<br>3. Reaction</td>
</tr>
<tr>
<td>CHAT_REQ_JOINED</td>
@ -695,7 +706,7 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
</tr>
<tr>
<td>MESSAGE_RECURRING_PAY</td>
<td>You were charged {2} by {1}</td>
<td>{1} were charged {2}</td>
<td>1. The entity to which money was sent for a recurring subscription<br>2. The amount of money charged for a recurring subscription</td>
</tr>
<tr>
@ -714,6 +725,16 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
<td>1. User name<br>2. Sticker emoji</td>
</tr>
<tr>
<td>MESSAGE_STORY</td>
<td>{1} shared a story with you</td>
<td>1. User name</td>
</tr>
<tr>
<td>MESSAGE_STORY_MENTION</td>
<td>mentioned you in a story</td>
<td> </td>
</tr>
<tr>
<td>MESSAGE_TEXT</td>
<td>{1}: {2}</td>
<td>1. Message author<br>2. Message body</td>
@ -915,83 +936,93 @@ Simple push works by sending a simple PUT request with a <code>version=number</c
</tr>
<tr>
<td>REACT_AUDIO</td>
<td>{1}: {2} to your voice message</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your voice message</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_CONTACT</td>
<td>{1}: {2} to your contact {3}</td>
<td>1. User name<br>2. Reaction<br>3. Contact name</td>
<td>{2} to your contact {3}</td>
<td>2. Reaction<br>3. Contact name</td>
</tr>
<tr>
<td>REACT_DOC</td>
<td>{1}: {2} to your file</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your file</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_GAME</td>
<td>{1}: {2} to your game</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your game</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_GEO</td>
<td>{1}: {2} to your map</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your map</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_GEOLIVE</td>
<td>{1}: {2} to your live location</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your live location</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_GIF</td>
<td>{1}: {2} to your GIF</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your GIF</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_INVOICE</td>
<td>{1}: {2} to your invoice</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your invoice</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_NOTEXT</td>
<td>{1}: {2} to your message</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your message</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_PHOTO</td>
<td>{1}: {2} to your photo</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your photo</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_POLL</td>
<td>{1}: {2} to your poll {3}</td>
<td>1. User name<br>2. Reaction<br>3. Poll name</td>
<td>{2} to your poll {3}</td>
<td>2. Reaction<br>3. Poll name</td>
</tr>
<tr>
<td>REACT_QUIZ</td>
<td>{1}: {2} to your quiz {3}</td>
<td>1. User name<br>2. Reaction<br>3. Quiz name</td>
<td>{2} to your quiz {3}</td>
<td>2. Reaction<br>3. Quiz name</td>
</tr>
<tr>
<td>REACT_ROUND</td>
<td>{1}: {2} to your video message</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your video message</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>REACT_STICKER</td>
<td>{1}: {2} to your {3} sticker</td>
<td>1. User name<br>2. Reaction<br>3. Sticker emoji</td>
<td>{2} to your {3} sticker</td>
<td>2. Reaction<br>3. Sticker emoji</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>
<td>{2} to your "{3}"</td>
<td>2. Reaction<br>3. Message body</td>
</tr>
<tr>
<td>REACT_VIDEO</td>
<td>{1}: {2} to your video</td>
<td>1. User name<br>2. Reaction</td>
<td>{2} to your video</td>
<td>2. Reaction</td>
</tr>
<tr>
<td>STORY_HIDDEN_AUTHOR</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>STORY_NOTEXT</td>
<td>posted a story</td>
<td> </td>
</tr>
</tbody>
</table></div>

View file

@ -71,7 +71,7 @@ invokeWithMessagesRange#365275f2 {X:Type} range:MessageRange query:!X = X;</code
<p>First of all, obtain a list of message ranges by invoking <a href="/method/messages.getSplitRanges">messages.getSplitRanges</a> (wrapping it in an <a href="/method/invokeWithTakeout">invokeWithTakeout</a> as usual). </p>
<p>Then, when invoking methods that require message range pagination, wrap the method using <a href="/method/invokeWithMessagesRange">invokeWithMessagesRange</a>, before also wrapping it in an <a href="/method/invokeWithTakeout">invokeWithTakeout</a> as usual. </p>
<p>Start by passing the first message range; continue passing the same message range while paginating using the <a href="/api/offsets">usual <code>offset_*</code>, <code>limit</code>, etc parameters</a>; once there are no more results left, switch to the next message range, re-starting <code>offset_*</code>, <code>limit</code> pagination from the beginning.<br>
Repeat until you've finished all message ranges. </p>
Repeat until you've finished all the message ranges that were returned by <a href="/method/messages.getSplitRanges">messages.getSplitRanges</a>. </p>
<h3><a class="anchor" href="#contacts" id="contacts" name="contacts"><i class="anchor-icon"></i></a>Contacts</h3>
<pre><code><a href='/constructor/savedPhoneContact'>savedPhoneContact</a>#1142bd56 phone:<a href='/type/string'>string</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> date:<a href='/type/int'>int</a> = <a href='/type/SavedContact'>SavedContact</a>;
@ -88,9 +88,7 @@ Repeat until you've finished all message ranges. </p>
<a href='/method/channels.getLeftChannels'>channels.getLeftChannels</a>#8341ecc0 offset:<a href='/type/int'>int</a> = <a href='/type/messages.Chats'>messages.Chats</a>;</code></pre>
<p>This method does <strong>not</strong> require pagination using <a href="#split-ranges">message ranges</a>. </p>
<p>Use <a href="/method/channels.getLeftChannels">channels.getLeftChannels</a> to get a list of channels or supergroups we left.</p>
<h3><a class="anchor" href="#" id="" name=""><i class="anchor-icon"></i></a></h3>
<p>This method <strong>requires</strong> pagination using <a href="#split-ranges">message ranges</a>.</p></div>
<p>Use <a href="/method/channels.getLeftChannels">channels.getLeftChannels</a> to get a list of channels or supergroups we left.</p></div>
</div>

View file

@ -141,7 +141,7 @@
<tr>
<td>400</td>
<td>ADDRESS_INVALID</td>
<td> </td>
<td>The specified geopoint address is invalid.</td>
</tr>
<tr>
<td>400</td>
@ -159,6 +159,11 @@
<td>Chat about too long.</td>
</tr>
<tr>
<td>500</td>
<td>CHAT_INVALID</td>
<td>Invalid chat.</td>
</tr>
<tr>
<td>400</td>
<td>CHAT_TITLE_EMPTY</td>
<td>No chat title provided.</td>

View file

@ -139,6 +139,11 @@
<td>You can't write in this chat.</td>
</tr>
<tr>
<td>403</td>
<td>PREMIUM_ACCOUNT_REQUIRED</td>
<td>A premium account is required to execute this action.</td>
</tr>
<tr>
<td>400</td>
<td>TOPIC_TITLE_EMPTY</td>
<td>The specified topic title is empty.</td>

View file

@ -146,12 +146,12 @@
<tr>
<td>400</td>
<td>TOPIC_CLOSE_SEPARATELY</td>
<td> </td>
<td>The <code>close</code> flag cannot be provided together with any of the other flags.</td>
</tr>
<tr>
<td>400</td>
<td>TOPIC_HIDE_SEPARATELY</td>
<td> </td>
<td>The <code>hide</code> flag cannot be provided together with any of the other flags.</td>
</tr>
<tr>
<td>400</td>

View file

@ -95,11 +95,6 @@
<td>You haven't joined this channel/supergroup.</td>
</tr>
<tr>
<td>500</td>
<td>CHAT_MEMBERS_CHANNEL</td>
<td> </td>
</tr>
<tr>
<td>400</td>
<td>INVITE_HASH_EMPTY</td>
<td>The invite hash is empty.</td>

View file

@ -99,11 +99,6 @@
<td>You have joined too many channels/supergroups.</td>
</tr>
<tr>
<td>500</td>
<td>CHANNEL_ID_GENERATE_FAILED</td>
<td> </td>
</tr>
<tr>
<td>403</td>
<td>CHAT_ADMIN_REQUIRED</td>
<td>You must be an admin in this chat to do this.</td>

View file

@ -93,6 +93,11 @@
</thead>
<tbody>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
<tr>
<td>403</td>
<td>PREMIUM_ACCOUNT_REQUIRED</td>
<td>A premium account is required to execute this action.</td>

View file

@ -94,6 +94,11 @@
</tr>
<tr>
<td>400</td>
<td>MSG_ID_INVALID</td>
<td>Invalid message ID provided.</td>
</tr>
<tr>
<td>400</td>
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>

View file

@ -107,6 +107,11 @@
<td>PEER_ID_INVALID</td>
<td>The provided peer id is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>STORY_ID_EMPTY</td>
<td>You specified no story IDs.</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>

View file

@ -98,6 +98,11 @@
</tr>
<tr>
<td>400</td>
<td>FILE_TOKEN_INVALID</td>
<td>The specified file token is invalid.</td>
</tr>
<tr>
<td>400</td>
<td>RSA_DECRYPT_FAILED</td>
<td>Internal RSA decryption failed.</td>
</tr>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 98 37 0B 00 07 EB 6C 65
0010 | 14 00 00 00 F1 8E 7E BE 2B 61 E8 CE 46 92 30 D3
0020 | F0 2E B0 DD 8B 34 7C 7A</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 D4 6C 0C 00 5D 54 6E 65
0010 | 14 00 00 00 F1 8E 7E BE A9 A9 E7 60 C1 90 09 93
0020 | EF 1D D3 FA 51 4A 0E 34</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>98370B0007EB6C65</code></td>
<td><code>D46C0C005D546E65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -95,7 +95,7 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</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 48 CB 4A 07 EB 6C 65
0010 | C4 00 00 00 63 24 16 05 2B 61 E8 CE 46 92 30 D3
0020 | F0 2E B0 DD 8B 34 7C 7A 0B 13 97 9C AF 03 8B 9C
0030 | B1 CF FB 2E 5A 4C 90 B1 08 1B 02 0A 05 F2 85 48
0040 | 2D 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 00 27 D4 5D 54 6E 65
0010 | 60 00 00 00 63 24 16 05 A9 A9 E7 60 C1 90 09 93
0020 | EF 1D D3 FA 51 4A 0E 34 69 41 64 B6 A2 26 86 5F
0030 | 51 76 4C C1 1D 1D 1C C1 08 2B E8 4F 32 72 57 A7
0040 | 45 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>0148CB4A07EB6C65</code></td>
<td><code>010027D45D546E65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>C4000000</code> (196 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>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>081B020A05F285482D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1946129009637410861</td>
<td><code>082BE84F327257A745000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3163865816313079621</td>
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
</tr>
<tr>
@ -208,22 +208,22 @@
<h4><a class="anchor" href="#proof-of-work" id="proof-of-work" name="proof-of-work"><i class="anchor-icon"></i></a>Proof of work</h4>
<h5><a class="anchor" href="#3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" id="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" name="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p &lt; q.</h5>
<!-- start pq -->
<pre><code>pq = 1946129009637410861</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>1946129009637410861 = 1037997977 * 1874887093</code></p>
<pre><code>p = 1037997977
q = 1874887093</code></pre>
<pre><code>pq = 3163865816313079621</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3163865816313079621 = 1751455103 * 1806421307</code></p>
<pre><code>p = 1751455103
q = 1806421307</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 1B 02 0A 05 F2 85 48 2D 00 00 00
0010 | 04 3D DE 97 99 00 00 00 04 6F C0 81 B5 00 00 00
0020 | 2B 61 E8 CE 46 92 30 D3 F0 2E B0 DD 8B 34 7C 7A
0030 | 0B 13 97 9C AF 03 8B 9C B1 CF FB 2E 5A 4C 90 B1
0040 | 16 40 1E E2 AC E9 2F A4 AE 0E E0 BC EE EF FB 29
0050 | 69 3D CD 74 E7 07 FE 6F 97 33 4E 2C A1 6F 15 64
<pre><code>0000 | 95 5F F5 A9 08 2B E8 4F 32 72 57 A7 45 00 00 00
0010 | 04 68 65 15 7F 00 00 00 04 6B AB CD 3B 00 00 00
0020 | A9 A9 E7 60 C1 90 09 93 EF 1D D3 FA 51 4A 0E 34
0030 | 69 41 64 B6 A2 26 86 5F 51 76 4C C1 1D 1D 1C C1
0040 | 28 80 34 A2 9E 8F 8D 40 A2 76 0B BA AC 78 99 1B
0050 | F1 AD BF 24 F2 D6 68 DA 91 2D BD 36 C4 1A DA EE
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 = 1874887093</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>081B020A05F285482D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1946129009637410861</td>
<td><code>082BE84F327257A745000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3163865816313079621</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>043DDE9799000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1037997977</td>
<td><code>046865157F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1751455103</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>046FC081B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1874887093</td>
<td><code>046BABCD3B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1806421307</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>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>16401EE2ACE92FA4AE0EE0BCEEEFFB29</code> <code>693DCD74E707FE6F97334E2CA16F1564</code></td>
<td><code>288034A29E8F8D40A2760BBAAC78991B</code> <code>F1ADBF24F2D668DA912DBD36C41ADAEE</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1874887093</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 = 955FF5A9081B020A05F285482D000000043DDE9799000000046FC081B50000002B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B116401EE2ACE92FA4AE0EE0BCEEEFFB29693DCD74E707FE6F97334E2CA16F156402000000
random_padding_bytes = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D2248993E1A8DCABFF33C447069EA746881CC901111E6C8DDF5E102C734C35F3D9A7E512D98CB7BF509C07DBA2DF796C8554D58513AFF799E58260D6D47334B6C7</code></pre>
<pre><code>data = 955FF5A9082BE84F327257A745000000046865157F000000046BABCD3B000000A9A9E760C1900993EF1DD3FA514A0E34694164B6A226865F51764CC11D1D1CC1288034A29E8F8D40A2760BBAAC78991BF1ADBF24F2D668DA912DBD36C41ADAEE02000000
random_padding_bytes = 62802FD3A854F23BC3BAA4B2784CC11390362E1839E954F5CA27D3DFB0172A3CE3D5A92E066E5560611C3848F65DE71D73970E063E23B113E36237D21EE06BF414B3E954FCCED55A2F97B9CBA320CC800A387B2CFF90D3C229D9DC6F</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 = 7C7116856E39AEE23DA81918C4964BFEDB3446BB7225CB18068BCAEFFB302AE8D231A4AED8E27893126979F9A667AABB485D5BCFFA4EB8A4DB98E623F513E88AD39FD7A10C5317BB73F43C12926A7B7589B076BBC3BB6EEC22622C68C2DBDA42806A7CB1295DACD847F50D455C417FD37298907D8805AFA4961347ADD77A6B1A118E78C6A721B2BC15EEABB498EB44838FE64839E075CFB822C597F6DB17B82967AAB3379906AB78BEC7B0BDA340479186E3BB6516E781E216954CF4B856247256DA25B6EF332D86C682A841694B05FAB3DFB8DFB766AE7A06D996BBB7DCB56659D13F67D22221EA37502ECC98AF03AF55D20530D2DB5BBB3476CBA3FD0F3C8E</code></pre>
<pre><code>encrypted_data = 859CE2A8C3343953B8B51FD840A5E91FC5068B2996283AD7AFF31CEC7239C4F280B193EC199B8F37FAAC476589AEAAA308EF5623EF7C596FA3E7FF808E205073AE98CDD56F3C8F57347E0A1601D9F6BF4435E14CB099DD9EA4FBD85EFC6A69C49324FFA923058A366C9B1416EAB246F90091F4D17B5455B606AF1DDE9E19C44AED6F243BE547B79E804E7683246D14D1D7B6A66A89C7DD1536BD9C26AC8826341787FCEDA5A0DEB8411E5EC5B0D547721EC1D278D92C83C9D79B405F9AA6C41C61AEF0476577ACD165C8AD3E29079ACADDA7F3A22D44A16BCE21C5C10778779AF9BDCB7F6CA1A6D709D2B55C4B34195B9ACBFE3FBD38A33FFEA4BD3F7541DA94</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 EB 0D 00 07 EB 6C 65
0010 | 40 01 00 00 BE E4 12 D7 2B 61 E8 CE 46 92 30 D3
0020 | F0 2E B0 DD 8B 34 7C 7A 0B 13 97 9C AF 03 8B 9C
0030 | B1 CF FB 2E 5A 4C 90 B1 04 3D DE 97 99 00 00 00
0040 | 04 6F C0 81 B5 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 7C 71 16 85 6E 39 AE E2 3D A8 19 18
0060 | C4 96 4B FE DB 34 46 BB 72 25 CB 18 06 8B CA EF
0070 | FB 30 2A E8 D2 31 A4 AE D8 E2 78 93 12 69 79 F9
0080 | A6 67 AA BB 48 5D 5B CF FA 4E B8 A4 DB 98 E6 23
0090 | F5 13 E8 8A D3 9F D7 A1 0C 53 17 BB 73 F4 3C 12
00A0 | 92 6A 7B 75 89 B0 76 BB C3 BB 6E EC 22 62 2C 68
00B0 | C2 DB DA 42 80 6A 7C B1 29 5D AC D8 47 F5 0D 45
00C0 | 5C 41 7F D3 72 98 90 7D 88 05 AF A4 96 13 47 AD
00D0 | D7 7A 6B 1A 11 8E 78 C6 A7 21 B2 BC 15 EE AB B4
00E0 | 98 EB 44 83 8F E6 48 39 E0 75 CF B8 22 C5 97 F6
00F0 | DB 17 B8 29 67 AA B3 37 99 06 AB 78 BE C7 B0 BD
0100 | A3 40 47 91 86 E3 BB 65 16 E7 81 E2 16 95 4C F4
0110 | B8 56 24 72 56 DA 25 B6 EF 33 2D 86 C6 82 A8 41
0120 | 69 4B 05 FA B3 DF B8 DF B7 66 AE 7A 06 D9 96 BB
0130 | B7 DC B5 66 59 D1 3F 67 D2 22 21 EA 37 50 2E CC
0140 | 98 AF 03 AF 55 D2 05 30 D2 DB 5B BB 34 76 CB A3
0150 | FD 0F 3C 8E</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 D8 6C 0C 00 5D 54 6E 65
0010 | 40 01 00 00 BE E4 12 D7 A9 A9 E7 60 C1 90 09 93
0020 | EF 1D D3 FA 51 4A 0E 34 69 41 64 B6 A2 26 86 5F
0030 | 51 76 4C C1 1D 1D 1C C1 04 68 65 15 7F 00 00 00
0040 | 04 6B AB CD 3B 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 85 9C E2 A8 C3 34 39 53 B8 B5 1F D8
0060 | 40 A5 E9 1F C5 06 8B 29 96 28 3A D7 AF F3 1C EC
0070 | 72 39 C4 F2 80 B1 93 EC 19 9B 8F 37 FA AC 47 65
0080 | 89 AE AA A3 08 EF 56 23 EF 7C 59 6F A3 E7 FF 80
0090 | 8E 20 50 73 AE 98 CD D5 6F 3C 8F 57 34 7E 0A 16
00A0 | 01 D9 F6 BF 44 35 E1 4C B0 99 DD 9E A4 FB D8 5E
00B0 | FC 6A 69 C4 93 24 FF A9 23 05 8A 36 6C 9B 14 16
00C0 | EA B2 46 F9 00 91 F4 D1 7B 54 55 B6 06 AF 1D DE
00D0 | 9E 19 C4 4A ED 6F 24 3B E5 47 B7 9E 80 4E 76 83
00E0 | 24 6D 14 D1 D7 B6 A6 6A 89 C7 DD 15 36 BD 9C 26
00F0 | AC 88 26 34 17 87 FC ED A5 A0 DE B8 41 1E 5E C5
0100 | B0 D5 47 72 1E C1 D2 78 D9 2C 83 C9 D7 9B 40 5F
0110 | 9A A6 C4 1C 61 AE F0 47 65 77 AC D1 65 C8 AD 3E
0120 | 29 07 9A CA DD A7 F3 A2 2D 44 A1 6B CE 21 C5 C1
0130 | 07 78 77 9A F9 BD CB 7F 6C A1 A6 D7 09 D2 B5 5C
0140 | 4B 34 19 5B 9A CB FE 3F BD 38 A3 3F FE A4 BD 3F
0150 | 75 41 DA 94</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 = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D22
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>9CEB0D0007EB6C65</code></td>
<td><code>D86C0C005D546E65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -363,25 +363,25 @@ random_padding_bytes = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D22
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>043DDE9799000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1037997977</td>
<td><code>046865157F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1751455103</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>046FC081B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1874887093</td>
<td><code>046BABCD3B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1806421307</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 = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D22
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE0001007C7116856E39AEE23DA81918</code> <code>C4964BFEDB3446BB7225CB18068BCAEF</code> <code>FB302AE8D231A4AED8E27893126979F9</code> <code>A667AABB485D5BCFFA4EB8A4DB98E623</code> <code>F513E88AD39FD7A10C5317BB73F43C12</code> <code>926A7B7589B076BBC3BB6EEC22622C68</code> <code>C2DBDA42806A7CB1295DACD847F50D45</code> <code>5C417FD37298907D8805AFA4961347AD</code> <code>D77A6B1A118E78C6A721B2BC15EEABB4</code> <code>98EB44838FE64839E075CFB822C597F6</code> <code>DB17B82967AAB3379906AB78BEC7B0BD</code> <code>A340479186E3BB6516E781E216954CF4</code> <code>B856247256DA25B6EF332D86C682A841</code> <code>694B05FAB3DFB8DFB766AE7A06D996BB</code> <code>B7DCB56659D13F67D22221EA37502ECC</code> <code>98AF03AF55D20530D2DB5BBB3476CBA3</code><br> <code>FD0F3C8E</code></td>
<td><code>FE000100859CE2A8C3343953B8B51FD8</code> <code>40A5E91FC5068B2996283AD7AFF31CEC</code> <code>7239C4F280B193EC199B8F37FAAC4765</code> <code>89AEAAA308EF5623EF7C596FA3E7FF80</code> <code>8E205073AE98CDD56F3C8F57347E0A16</code> <code>01D9F6BF4435E14CB099DD9EA4FBD85E</code> <code>FC6A69C49324FFA923058A366C9B1416</code> <code>EAB246F90091F4D17B5455B606AF1DDE</code> <code>9E19C44AED6F243BE547B79E804E7683</code> <code>246D14D1D7B6A66A89C7DD1536BD9C26</code> <code>AC8826341787FCEDA5A0DEB8411E5EC5</code> <code>B0D547721EC1D278D92C83C9D79B405F</code> <code>9AA6C41C61AEF0476577ACD165C8AD3E</code> <code>29079ACADDA7F3A22D44A16BCE21C5C1</code> <code>0778779AF9BDCB7F6CA1A6D709D2B55C</code> <code>4B34195B9ACBFE3FBD38A33FFEA4BD3F</code><br> <code>7541DA94</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D22
<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 B4 EA F2 07 EB 6C 65
0010 | BC 02 00 00 5C 07 E8 D0 2B 61 E8 CE 46 92 30 D3
0020 | F0 2E B0 DD 8B 34 7C 7A 0B 13 97 9C AF 03 8B 9C
0030 | B1 CF FB 2E 5A 4C 90 B1 FE 50 02 00 F5 31 B3 DD
0040 | 83 6C AE 3B E2 8E 2C 1B 46 86 CA F7 70 06 58 FF
0050 | DE 89 1B 3B 49 DD 4C E5 B7 3D 9F FA 6C 86 62 90
0060 | 18 57 39 93 9A F0 D6 AE CA B0 A0 B7 85 F5 3B 62
0070 | C4 C3 C4 F8 F5 97 27 86 CC ED 85 3D 2C FE C7 C6
0080 | F0 1A 38 36 ED 3C 67 B7 98 AB 8A 7A 5D 40 FF 09
0090 | A5 A1 89 F0 4C EB AD CC 7F D8 A2 25 86 B7 EF 6A
00A0 | 39 F3 98 82 FF 5C A4 85 5A B6 95 36 83 B6 7D F8
00B0 | DE 80 3D 15 75 30 01 F7 51 10 E8 B9 7D 48 49 49
00C0 | 7A 11 0D 0A 8C 8B 21 98 3B 0E CF 8D 43 AB 9F 14
00D0 | 95 8A 48 12 C5 FF 13 DA 1C 32 B9 59 66 B5 39 2C
00E0 | 93 16 39 F6 21 56 77 2D A2 06 A4 91 39 89 56 A1
00F0 | 28 7E 70 02 17 4F 71 FA 22 12 BC EE C1 A3 DA AE
0100 | 61 79 89 D9 43 92 6C 3B 1B AE 39 FE 9E F2 77 ED
0110 | 39 EF D4 22 62 E1 CD FD 1D C9 EF 3D 9E 89 ED A6
0120 | 86 64 57 FC 7E 5F FB C5 CB C6 CC 89 86 EF 9B F6
0130 | 56 E2 50 CD BF 1D 00 BF F9 B9 9C C8 7B EC B3 86
0140 | 38 FD 67 36 6E 61 6B 79 9B B4 BF 6F 09 0A 61 87
0150 | 68 EC 3A E6 26 53 AD 5A 0B 8D 15 95 0A 40 A7 A0
0160 | B3 3A 3B 35 5B A1 0E 0B 04 26 9F F0 42 C4 91 6E
0170 | DA 6D 53 2E 0C DE CC F3 CE 11 6D 65 E4 17 4A BA
0180 | 90 51 ED B8 0F 12 45 95 A2 92 8B 8E A8 E2 8C 2D
0190 | D9 B9 93 C4 5B A1 6E 26 51 E3 0E 9B 63 B4 00 EA
01A0 | 65 89 96 2D CC 05 F4 EE 32 2D AA FB 47 5E 97 C3
01B0 | 37 C2 FF 2B 07 55 E9 6B 9D E4 02 E9 EE BB C0 D4
01C0 | 20 D5 E4 46 8A 3D 00 9A A5 1C 32 7B 54 C2 EA F4
01D0 | 63 90 DE 0C EA D4 51 C7 B6 06 DD 13 24 B8 AB D5
01E0 | 82 4D FF 7A 59 5B 4E FD 37 90 F1 CF F4 0E 58 F3
01F0 | D2 DA 00 00 D9 BD 1C CC F4 54 75 E5 E9 60 26 AC
0200 | 34 DD 5E 72 E1 90 88 AC 41 43 2F 39 8F F0 42 0F
0210 | 40 BF 9F 63 BF B3 2C 92 4A 40 C4 14 83 02 60 33
0220 | 12 D3 55 B7 21 8A CB 70 CA DB 13 1A 9D 16 D7 4E
0230 | 9F 17 73 C0 BF 03 F3 BB 88 7F 22 A8 A4 EA 40 F6
0240 | 1F 33 51 DD 9A 84 4C 8E AE 16 70 83 B4 C7 2B 39
0250 | 58 E8 E2 D7 20 92 EE F3 49 18 FD 25 6C 8E 9B B4
0260 | FE 12 C6 77 74 D1 F4 7E BA EE 20 67 48 81 3F 5A
0270 | AC 44 36 A6 7E A7 B2 FC 08 EA FF E6 BB 22 31 8C
0280 | 83 E3 A7 5B 0F 3F 47 EE E9 BF 7C 70</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 70 B2 7B 5E 54 6E 65
0010 | 98 02 00 00 5C 07 E8 D0 A9 A9 E7 60 C1 90 09 93
0020 | EF 1D D3 FA 51 4A 0E 34 69 41 64 B6 A2 26 86 5F
0030 | 51 76 4C C1 1D 1D 1C C1 FE 50 02 00 C9 EF 02 01
0040 | 32 84 BC 69 5E FF AA 67 C2 90 7D 89 E3 E6 A4 06
0050 | AD 58 0B BF 65 16 27 9B 4A DD 57 F9 F9 AE A7 CE
0060 | 38 AE 90 4A D5 65 D7 6D C5 18 45 2B AE 9B B9 B6
0070 | DA 5A 1A D1 20 3D FC 5A 6E 45 8C 0E 13 1A 8D 8F
0080 | 9E 67 19 2A 3E E1 AF 22 30 6D F7 72 ED ED 7C 56
0090 | 87 FB FD B3 76 DC 17 76 FF 84 4C B4 52 6E 61 21
00A0 | DD 82 5F 8D 4A A3 94 43 B5 11 1A 1A 0E C4 83 2A
00B0 | 55 71 36 3A CB EC 73 B7 77 16 08 B2 8B 14 F5 E3
00C0 | 5D 5D 8E 9F A8 B7 A4 7A AB 42 08 C3 43 78 70 3C
00D0 | 3E 6A 5F 3A 22 E7 DA 67 05 10 B6 44 BA FB 30 14
00E0 | 92 CD C6 7C 7D 99 50 24 E8 2E 99 E3 1A E7 6F FD
00F0 | 2B F4 00 E0 66 63 2B F3 A6 22 3F B9 99 61 74 A9
0100 | 37 C3 E8 BE 22 8F 07 47 E6 92 DC 69 66 A2 5E 1F
0110 | BE 2F 84 1C 29 27 FB 63 45 34 CC 0F 27 D5 B2 97
0120 | 6B 3D BF 32 73 B6 05 BF 82 FC 6A F9 44 3D F7 7F
0130 | 25 53 A2 30 81 9B CE CA 28 25 98 8E 9C E6 E3 6B
0140 | 2B FF 5F A9 36 D1 F8 5D 0E 6F 93 50 E2 C4 37 3C
0150 | 5F 3C EB C1 80 B0 D1 CB 57 6E 0F 33 32 32 D9 F1
0160 | 18 13 FE 4C 17 3B B2 EA 73 63 8E 8E 93 29 2F 4C
0170 | 99 D9 AA DA 44 7C BD 2D CB 6A 96 0F 0D C3 90 71
0180 | 02 FC 67 72 DF 40 D2 F2 0C 97 80 16 0E 95 F0 C6
0190 | 6C 76 74 80 F5 D2 09 4E 4B 68 2A EA 02 67 AC 63
01A0 | B7 F5 BE C6 D2 71 34 87 36 42 A8 93 93 BF FF 61
01B0 | 3D F0 5E 6C AD C5 BE D2 B1 C1 03 4D 25 5D 91 C5
01C0 | 3E DF 4D 2F 31 77 28 F4 81 44 EF 54 B9 6A 65 93
01D0 | 15 2C 03 8D 5B 2E 8F A5 7F 06 AC BF 38 33 D8 BD
01E0 | 3D D2 B6 7C 4B AB 60 AD F4 27 84 E0 3A 97 CC 65
01F0 | 6C A8 44 E8 06 30 CC 19 93 62 4B 30 6E E9 64 ED
0200 | 16 84 BF BC C2 25 18 7E C9 5C 69 6A 92 0F 34 F5
0210 | DF 0A 3B A1 52 68 26 97 58 ED B7 0F F8 66 54 1D
0220 | 28 58 8A DE 93 4B DF BE 55 90 5E 6F 3E 8B FD 1A
0230 | 66 0B 34 B2 1B BD 94 C4 CD FE 50 C6 0A 36 0A C1
0240 | 33 DA 1B B6 73 F6 77 39 17 C1 15 01 AF 67 EF DE
0250 | 31 16 58 AC C9 6B D2 59 FF 56 3A B4 0A CE 0E 06
0260 | F7 0E 2B FA 2C 84 05 F3 F3 95 DE 5F D8 58 62 2B
0270 | D1 A1 8E 1C 3A 6A 4D B5 A8 F8 2B B9 F7 EC 52 D4
0280 | 10 83 DC 58 94 8E F3 7F CD 24 E8 39</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 = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D22
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>01B4EAF207EB6C65</code></td>
<td><code>0170B27B5E546E65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>BC020000</code> (700 in decimal)</td>
<td><code>98020000</code> (664 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D22
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE500200F531B3DD836CAE3BE28E2C1B</code> <code>4686CAF7700658FFDE891B3B49DD4CE5</code> <code>B73D9FFA6C866290185739939AF0D6AE</code> <code>CAB0A0B785F53B62C4C3C4F8F5972786</code> <code>CCED853D2CFEC7C6F01A3836ED3C67B7</code> <code>98AB8A7A5D40FF09A5A189F04CEBADCC</code> <code>7FD8A22586B7EF6A39F39882FF5CA485</code> <code>5AB6953683B67DF8DE803D15753001F7</code> <code>5110E8B97D4849497A110D0A8C8B2198</code> <code>3B0ECF8D43AB9F14958A4812C5FF13DA</code> <code>1C32B95966B5392C931639F62156772D</code> <code>A206A491398956A1287E7002174F71FA</code> <code>2212BCEEC1A3DAAE617989D943926C3B</code> <code>1BAE39FE9EF277ED39EFD42262E1CDFD</code> <code>1DC9EF3D9E89EDA6866457FC7E5FFBC5</code> <code>CBC6CC8986EF9BF656E250CDBF1D00BF</code> <code>F9B99CC87BECB38638FD67366E616B79</code> <code>9BB4BF6F090A618768EC3AE62653AD5A</code> <code>0B8D15950A40A7A0B33A3B355BA10E0B</code> <code>04269FF042C4916EDA6D532E0CDECCF3</code> <code>CE116D65E4174ABA9051EDB80F124595</code> <code>A2928B8EA8E28C2DD9B993C45BA16E26</code> <code>51E30E9B63B400EA6589962DCC05F4EE</code> <code>322DAAFB475E97C337C2FF2B0755E96B</code> <code>9DE402E9EEBBC0D420D5E4468A3D009A</code> <code>A51C327B54C2EAF46390DE0CEAD451C7</code> <code>B606DD1324B8ABD5824DFF7A595B4EFD</code> <code>3790F1CFF40E58F3D2DA0000D9BD1CCC</code> <code>F45475E5E96026AC34DD5E72E19088AC</code> <code>41432F398FF0420F40BF9F63BFB32C92</code> <code>4A40C4148302603312D355B7218ACB70</code> <code>CADB131A9D16D74E9F1773C0BF03F3BB</code> <code>887F22A8A4EA40F61F3351DD9A844C8E</code> <code>AE167083B4C72B3958E8E2D72092EEF3</code> <code>4918FD256C8E9BB4FE12C67774D1F47E</code> <code>BAEE206748813F5AAC4436A67EA7B2FC</code> <code>08EAFFE6BB22318C83E3A75B0F3F47EE</code><br> <code>E9BF7C70</code></td>
<td><code>FE500200C9EF02013284BC695EFFAA67</code> <code>C2907D89E3E6A406AD580BBF6516279B</code> <code>4ADD57F9F9AEA7CE38AE904AD565D76D</code> <code>C518452BAE9BB9B6DA5A1AD1203DFC5A</code> <code>6E458C0E131A8D8F9E67192A3EE1AF22</code> <code>306DF772EDED7C5687FBFDB376DC1776</code> <code>FF844CB4526E6121DD825F8D4AA39443</code> <code>B5111A1A0EC4832A5571363ACBEC73B7</code> <code>771608B28B14F5E35D5D8E9FA8B7A47A</code> <code>AB4208C34378703C3E6A5F3A22E7DA67</code> <code>0510B644BAFB301492CDC67C7D995024</code> <code>E82E99E31AE76FFD2BF400E066632BF3</code> <code>A6223FB9996174A937C3E8BE228F0747</code> <code>E692DC6966A25E1FBE2F841C2927FB63</code> <code>4534CC0F27D5B2976B3DBF3273B605BF</code> <code>82FC6AF9443DF77F2553A230819BCECA</code> <code>2825988E9CE6E36B2BFF5FA936D1F85D</code> <code>0E6F9350E2C4373C5F3CEBC180B0D1CB</code> <code>576E0F333232D9F11813FE4C173BB2EA</code> <code>73638E8E93292F4C99D9AADA447CBD2D</code> <code>CB6A960F0DC3907102FC6772DF40D2F2</code> <code>0C9780160E95F0C66C767480F5D2094E</code> <code>4B682AEA0267AC63B7F5BEC6D2713487</code> <code>3642A89393BFFF613DF05E6CADC5BED2</code> <code>B1C1034D255D91C53EDF4D2F317728F4</code> <code>8144EF54B96A6593152C038D5B2E8FA5</code> <code>7F06ACBF3833D8BD3DD2B67C4BAB60AD</code> <code>F42784E03A97CC656CA844E80630CC19</code> <code>93624B306EE964ED1684BFBCC225187E</code> <code>C95C696A920F34F5DF0A3BA152682697</code> <code>58EDB70FF866541D28588ADE934BDFBE</code> <code>55905E6F3E8BFD1A660B34B21BBD94C4</code> <code>CDFE50C60A360AC133DA1BB673F67739</code> <code>17C11501AF67EFDE311658ACC96BD259</code> <code>FF563AB40ACE0E06F70E2BFA2C8405F3</code> <code>F395DE5FD858622BD1A18E1C3A6A4DB5</code> <code>A8F82BB9F7EC52D41083DC58948EF37F</code><br> <code>CD24E839</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 038B6B72765B208DFB7DD5D30A19AC5B73DBBA1920AA200A4B1987D22
<!-- 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 = F531B3DD836CAE3BE28E2C1B4686CAF7700658FFDE891B3B49DD4CE5B73D9FFA6C866290185739939AF0D6AECAB0A0B785F53B62C4C3C4F8F5972786CCED853D2CFEC7C6F01A3836ED3C67B798AB8A7A5D40FF09A5A189F04CEBADCC7FD8A22586B7EF6A39F39882FF5CA4855AB6953683B67DF8DE803D15753001F75110E8B97D4849497A110D0A8C8B21983B0ECF8D43AB9F14958A4812C5FF13DA1C32B95966B5392C931639F62156772DA206A491398956A1287E7002174F71FA2212BCEEC1A3DAAE617989D943926C3B1BAE39FE9EF277ED39EFD42262E1CDFD1DC9EF3D9E89EDA6866457FC7E5FFBC5CBC6CC8986EF9BF656E250CDBF1D00BFF9B99CC87BECB38638FD67366E616B799BB4BF6F090A618768EC3AE62653AD5A0B8D15950A40A7A0B33A3B355BA10E0B04269FF042C4916EDA6D532E0CDECCF3CE116D65E4174ABA9051EDB80F124595A2928B8EA8E28C2DD9B993C45BA16E2651E30E9B63B400EA6589962DCC05F4EE322DAAFB475E97C337C2FF2B0755E96B9DE402E9EEBBC0D420D5E4468A3D009AA51C327B54C2EAF46390DE0CEAD451C7B606DD1324B8ABD5824DFF7A595B4EFD3790F1CFF40E58F3D2DA0000D9BD1CCCF45475E5E96026AC34DD5E72E19088AC41432F398FF0420F40BF9F63BFB32C924A40C4148302603312D355B7218ACB70CADB131A9D16D74E9F1773C0BF03F3BB887F22A8A4EA40F61F3351DD9A844C8EAE167083B4C72B3958E8E2D72092EEF34918FD256C8E9BB4FE12C67774D1F47EBAEE206748813F5AAC4436A67EA7B2FC08EAFFE6BB22318C83E3A75B0F3F47EEE9BF7C70
tmp_aes_key = 0EC4F0C14F035104D377C5113F23FFDF8E92F502C8482FACE4396EE318ACBEA1
tmp_aes_iv = FC4DDAFCB1351D8B0E53DB5B10E1B7F5EFA5AB0F2B8188414A4BC90C16401EE2</code></pre>
<pre><code>encrypted_answer = C9EF02013284BC695EFFAA67C2907D89E3E6A406AD580BBF6516279B4ADD57F9F9AEA7CE38AE904AD565D76DC518452BAE9BB9B6DA5A1AD1203DFC5A6E458C0E131A8D8F9E67192A3EE1AF22306DF772EDED7C5687FBFDB376DC1776FF844CB4526E6121DD825F8D4AA39443B5111A1A0EC4832A5571363ACBEC73B7771608B28B14F5E35D5D8E9FA8B7A47AAB4208C34378703C3E6A5F3A22E7DA670510B644BAFB301492CDC67C7D995024E82E99E31AE76FFD2BF400E066632BF3A6223FB9996174A937C3E8BE228F0747E692DC6966A25E1FBE2F841C2927FB634534CC0F27D5B2976B3DBF3273B605BF82FC6AF9443DF77F2553A230819BCECA2825988E9CE6E36B2BFF5FA936D1F85D0E6F9350E2C4373C5F3CEBC180B0D1CB576E0F333232D9F11813FE4C173BB2EA73638E8E93292F4C99D9AADA447CBD2DCB6A960F0DC3907102FC6772DF40D2F20C9780160E95F0C66C767480F5D2094E4B682AEA0267AC63B7F5BEC6D27134873642A89393BFFF613DF05E6CADC5BED2B1C1034D255D91C53EDF4D2F317728F48144EF54B96A6593152C038D5B2E8FA57F06ACBF3833D8BD3DD2B67C4BAB60ADF42784E03A97CC656CA844E80630CC1993624B306EE964ED1684BFBCC225187EC95C696A920F34F5DF0A3BA15268269758EDB70FF866541D28588ADE934BDFBE55905E6F3E8BFD1A660B34B21BBD94C4CDFE50C60A360AC133DA1BB673F6773917C11501AF67EFDE311658ACC96BD259FF563AB40ACE0E06F70E2BFA2C8405F3F395DE5FD858622BD1A18E1C3A6A4DB5A8F82BB9F7EC52D41083DC58948EF37FCD24E839
tmp_aes_key = E96A1792988B55D95430AE549C488BF681641EC28E79158F9E3CC33BFDF87960
tmp_aes_iv = 8861AD3E24391A7C3CC470124711FB6AC4F42268A01FFE4DD29D9FCA288034A2</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 4025DC61AA8D3AD9FCF7D215C8FB2808285ACBD8BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002DDF0E0962C4FF122336959E5F1EF9ECDE0D5133DDA3F5226BF41BAAAFF1E406040D53EA007E1F860A6C492FDBC9081F5C961331348B8F53BB48EAA9F0CBD48FB8B8BD70DB1158296F0BF749D70DD32DBA7D83C5C4CE6B59B433030AE2C262BC0E39928A8120A262EF2B6BE8C1EADB73F39B77C85432B8230223774AF46ABBD790D4833CA1C169E0DA63F98CB9471AE9C9E12BCA8131C93B299E1A2EEA8FA3D452F80C72AC032AF5691560E84D2C4E7F89216C33B9ECE8D7C886DBC704C906DA70C459DADDBD31A891968A0876E66E634D635653A80985D5D9B19FB3A2E0C35415613F272CE291166B4D7C354BEA323B11930D99E2E405EF8B3CCEDCE1B4B2CB07EB6C6513675A1B626B5E92
answer = BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002DDF0E0962C4FF122336959E5F1EF9ECDE0D5133DDA3F5226BF41BAAAFF1E406040D53EA007E1F860A6C492FDBC9081F5C961331348B8F53BB48EAA9F0CBD48FB8B8BD70DB1158296F0BF749D70DD32DBA7D83C5C4CE6B59B433030AE2C262BC0E39928A8120A262EF2B6BE8C1EADB73F39B77C85432B8230223774AF46ABBD790D4833CA1C169E0DA63F98CB9471AE9C9E12BCA8131C93B299E1A2EEA8FA3D452F80C72AC032AF5691560E84D2C4E7F89216C33B9ECE8D7C886DBC704C906DA70C459DADDBD31A891968A0876E66E634D635653A80985D5D9B19FB3A2E0C35415613F272CE291166B4D7C354BEA323B11930D99E2E405EF8B3CCEDCE1B4B2CB07EB6C6513675A1B626B5E92</code></pre>
<pre><code>answer_with_hash = 04EFE59D8CA105B3FEFD125A52ED14A395F52677BA0D89B5A9A9E760C1900993EF1DD3FA514A0E34694164B6A226865F51764CC11D1D1CC103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100B0C038130ECF205F6785B02CF13BA26796D2DCE18D6C8ADE7C682D7F8214CE9404A30DF9B071B2713CE3F6CC9F690245BAB323F905E1B6811C19BEDEB515F9297C7C4ADC9F0C2C045223128E6443B7CD05C004C4F5A36851114ED6E8FC6580C48C7A1955B21EC90ECFC30E8F30F9E97854755920040CEC5E75FDCABE9E2C2EC3BD895CED053B0BBD3A251DDF321E17EC81757155ECB0DC3770D3FD5F60A287C42CF298DB44E1F68D54921DDE2D17227C1121D75F37952EAC2B350C3F8E8059D65F404BB1FCEA36FFB996150D41DD0624CEB2628A085A859CFF174D5C366983451D50D912C722D44B80924A19138F7DCBFA56273E9119643FFC4B5A782FFE0AC45E546E65C1255A8B7D9F86A3
answer = BA0D89B5A9A9E760C1900993EF1DD3FA514A0E34694164B6A226865F51764CC11D1D1CC103000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100B0C038130ECF205F6785B02CF13BA26796D2DCE18D6C8ADE7C682D7F8214CE9404A30DF9B071B2713CE3F6CC9F690245BAB323F905E1B6811C19BEDEB515F9297C7C4ADC9F0C2C045223128E6443B7CD05C004C4F5A36851114ED6E8FC6580C48C7A1955B21EC90ECFC30E8F30F9E97854755920040CEC5E75FDCABE9E2C2EC3BD895CED053B0BBD3A251DDF321E17EC81757155ECB0DC3770D3FD5F60A287C42CF298DB44E1F68D54921DDE2D17227C1121D75F37952EAC2B350C3F8E8059D65F404BB1FCEA36FFB996150D41DD0624CEB2628A085A859CFF174D5C366983451D50D912C722D44B80924A19138F7DCBFA56273E9119643FFC4B5A782FFE0AC45E546E65C1255A8B7D9F86A3</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 2B 61 E8 CE 46 92 30 D3 F0 2E B0 DD
0010 | 8B 34 7C 7A 0B 13 97 9C AF 03 8B 9C B1 CF FB 2E
0020 | 5A 4C 90 B1 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 A9 A9 E7 60 C1 90 09 93 EF 1D D3 FA
0010 | 51 4A 0E 34 69 41 64 B6 A2 26 86 5F 51 76 4C C1
0020 | 1D 1D 1C C1 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 = BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B
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 | 2D DF 0E 09 62 C4 FF 12 23 36 95 9E 5F 1E F9 EC
0140 | DE 0D 51 33 DD A3 F5 22 6B F4 1B AA AF F1 E4 06
0150 | 04 0D 53 EA 00 7E 1F 86 0A 6C 49 2F DB C9 08 1F
0160 | 5C 96 13 31 34 8B 8F 53 BB 48 EA A9 F0 CB D4 8F
0170 | B8 B8 BD 70 DB 11 58 29 6F 0B F7 49 D7 0D D3 2D
0180 | BA 7D 83 C5 C4 CE 6B 59 B4 33 03 0A E2 C2 62 BC
0190 | 0E 39 92 8A 81 20 A2 62 EF 2B 6B E8 C1 EA DB 73
01A0 | F3 9B 77 C8 54 32 B8 23 02 23 77 4A F4 6A BB D7
01B0 | 90 D4 83 3C A1 C1 69 E0 DA 63 F9 8C B9 47 1A E9
01C0 | C9 E1 2B CA 81 31 C9 3B 29 9E 1A 2E EA 8F A3 D4
01D0 | 52 F8 0C 72 AC 03 2A F5 69 15 60 E8 4D 2C 4E 7F
01E0 | 89 21 6C 33 B9 EC E8 D7 C8 86 DB C7 04 C9 06 DA
01F0 | 70 C4 59 DA DD BD 31 A8 91 96 8A 08 76 E6 6E 63
0200 | 4D 63 56 53 A8 09 85 D5 D9 B1 9F B3 A2 E0 C3 54
0210 | 15 61 3F 27 2C E2 91 16 6B 4D 7C 35 4B EA 32 3B
0220 | 11 93 0D 99 E2 E4 05 EF 8B 3C CE DC E1 B4 B2 CB
0230 | 07 EB 6C 65</code></pre>
0130 | B0 C0 38 13 0E CF 20 5F 67 85 B0 2C F1 3B A2 67
0140 | 96 D2 DC E1 8D 6C 8A DE 7C 68 2D 7F 82 14 CE 94
0150 | 04 A3 0D F9 B0 71 B2 71 3C E3 F6 CC 9F 69 02 45
0160 | BA B3 23 F9 05 E1 B6 81 1C 19 BE DE B5 15 F9 29
0170 | 7C 7C 4A DC 9F 0C 2C 04 52 23 12 8E 64 43 B7 CD
0180 | 05 C0 04 C4 F5 A3 68 51 11 4E D6 E8 FC 65 80 C4
0190 | 8C 7A 19 55 B2 1E C9 0E CF C3 0E 8F 30 F9 E9 78
01A0 | 54 75 59 20 04 0C EC 5E 75 FD CA BE 9E 2C 2E C3
01B0 | BD 89 5C ED 05 3B 0B BD 3A 25 1D DF 32 1E 17 EC
01C0 | 81 75 71 55 EC B0 DC 37 70 D3 FD 5F 60 A2 87 C4
01D0 | 2C F2 98 DB 44 E1 F6 8D 54 92 1D DE 2D 17 22 7C
01E0 | 11 21 D7 5F 37 95 2E AC 2B 35 0C 3F 8E 80 59 D6
01F0 | 5F 40 4B B1 FC EA 36 FF B9 96 15 0D 41 DD 06 24
0200 | CE B2 62 8A 08 5A 85 9C FF 17 4D 5C 36 69 83 45
0210 | 1D 50 D9 12 C7 22 D4 4B 80 92 4A 19 13 8F 7D CB
0220 | FA 56 27 3E 91 19 64 3F FC 4B 5A 78 2F FE 0A C4
0230 | 5E 54 6E 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 = BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE0001002DDF0E0962C4FF122336959E</code> <code>5F1EF9ECDE0D5133DDA3F5226BF41BAA</code> <code>AFF1E406040D53EA007E1F860A6C492F</code> <code>DBC9081F5C961331348B8F53BB48EAA9</code> <code>F0CBD48FB8B8BD70DB1158296F0BF749</code> <code>D70DD32DBA7D83C5C4CE6B59B433030A</code> <code>E2C262BC0E39928A8120A262EF2B6BE8</code> <code>C1EADB73F39B77C85432B8230223774A</code> <code>F46ABBD790D4833CA1C169E0DA63F98C</code> <code>B9471AE9C9E12BCA8131C93B299E1A2E</code> <code>EA8FA3D452F80C72AC032AF5691560E8</code> <code>4D2C4E7F89216C33B9ECE8D7C886DBC7</code> <code>04C906DA70C459DADDBD31A891968A08</code> <code>76E66E634D635653A80985D5D9B19FB3</code> <code>A2E0C35415613F272CE291166B4D7C35</code> <code>4BEA323B11930D99E2E405EF8B3CCEDC</code><br> <code>E1B4B2CB</code></td>
<td><code>FE000100B0C038130ECF205F6785B02C</code> <code>F13BA26796D2DCE18D6C8ADE7C682D7F</code> <code>8214CE9404A30DF9B071B2713CE3F6CC</code> <code>9F690245BAB323F905E1B6811C19BEDE</code> <code>B515F9297C7C4ADC9F0C2C045223128E</code> <code>6443B7CD05C004C4F5A36851114ED6E8</code> <code>FC6580C48C7A1955B21EC90ECFC30E8F</code> <code>30F9E97854755920040CEC5E75FDCABE</code> <code>9E2C2EC3BD895CED053B0BBD3A251DDF</code> <code>321E17EC81757155ECB0DC3770D3FD5F</code> <code>60A287C42CF298DB44E1F68D54921DDE</code> <code>2D17227C1121D75F37952EAC2B350C3F</code> <code>8E8059D65F404BB1FCEA36FFB996150D</code> <code>41DD0624CEB2628A085A859CFF174D5C</code> <code>366983451D50D912C722D44B80924A19</code> <code>138F7DCBFA56273E9119643FFC4B5A78</code><br> <code>2FFE0AC4</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>07EB6C65</code> (1701636871 in decimal)</td>
<td><code>5E546E65</code> (1701729374 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B
<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 = 7CAC5DD30984C50AA842F48F90D80FBB1B7C7E480D5094E366EF8CD9A3B9A653AA5AF5EAA939787618D5A4AB2D7BE565CB706BF7AD36F0BC9C9D518E25FBCC0404E9C815647B604A08CC827286D898058C7B4582B27956543D102CFD3D74F7874DCE8BA87E543A79FD89155B066119373A8D71B7A10D6774C21E5C8A9CDDFF75FDD6A5A38F5CD0FAB8206DAC93E6AE19004F7DE83A1542657ABD407E388F1AE26A789D0B136B64A20954914404A2E9605E71578D1B8B2F6D60CE51A26A39DA4ABFC1186FA3753F1A335F0FA2EAD84C00A2A1DA24E1E066569FADFD43FD1A1C21582600FD42352831965A3410FD163065CEAADE55EF6727EB613BD709543171C0</code></pre>
<pre><code>b = 98E98E89E25659746BB1B7D32360E34685BD948BC6B8D6B1EA94A994E018D7E45F8A218021B583C181E8F0FAB182796B011ABE552528E4BB9600AC0CE69D17F1AF0099F412F037F1E5D54784F8B57DB102B2D02B00AD84D4A33F7EAF049EFFB4ADAC676099D2C680BA2D6C508DC6D6E56898EB8504D4E46C64D3277A643EC1A53CAF435D47C35F1BF2D53B298269459B36FAF38BAF8429CD72BEB0467E75B4867B291D5D18A18CDA3372E7B714E28A8CAEFAA3476E007EE8AB54D482CC9814B13F7CF5B8DA04E4303BBA0F58A4A1BA7A3077A02619F435E638B9A520996E9A545FC09EB97D7C404AA451878B9FE0B5C5F48C178B099400DDF627200AA06A4FEC</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 = 5DE63467EDB3BFAA85242250ED73AD59FFB6421128FC16D29B5863532214029F0A553DA6AFE4C6C9B0B8471156308B17DBC829B8DDA7D48A762AE917726E80380AE83915F29A76D44964F6EFE3171CAC12EB3293FF42F2430793219478BABD6575F30BD1FCA2D1386421ABFA37D064D15F95E3B20F12171485150EFAA6F4EAF7F6B7CC3F8BA663322962005380A9BE9E3D7C1F4C3C080862DD7420488B072EC81873F872B62A7FCD3798E7E92C5F53DD730E92AB882406C4A10644A9B71A86F3C96229F5A11C1B1EDB40817556F15075A3CB9B5CCA73BA1CE7B3EF3EB4D0661D01F5EC8A2AF64928C902DDE03BCAF13AA51417A81116817CA753EF924020F12A</code></pre>
<pre><code>g_b = 2588E25A92633AD1B5FC851F5A4B9F8BB0A26145EC5E160369577DFF86CAF703A4D02DB7F512E696ECA856DA52C0D3FCFE91991D1A7D7207AEE7C20B0553EE13DFFF4CBE3771299FA40C2AC5281DF37B68E9E314440CFE3C59C2A2AD607C13607815AB8A6744551F2F6F890AA3C2BA8649DFB1C910BD1B166698B7A75B00BCA5D2F0444C88D97B843350AE83095C1BE4BACDF25720BA2248D473CDD6571A35E54C2E350892AD752CF92D6F5D1189C7914A2D6033D78591FB2EF7DAFD3F3E9A43AA84875CDCAAD4AC423A2856BFC110226C9688981F5AE981FB84432D49FF2FC04ACFC6A82BA89BC336D93359C6CECE1C1ECCE7450B079DB9581D01A895805CD6</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 2B 61 E8 CE 46 92 30 D3 F0 2E B0 DD
0010 | 8B 34 7C 7A 0B 13 97 9C AF 03 8B 9C B1 CF FB 2E
0020 | 5A 4C 90 B1 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 5D E6 34 67 ED B3 BF AA 85 24 22 50 ED 73 AD 59
0040 | FF B6 42 11 28 FC 16 D2 9B 58 63 53 22 14 02 9F
0050 | 0A 55 3D A6 AF E4 C6 C9 B0 B8 47 11 56 30 8B 17
0060 | DB C8 29 B8 DD A7 D4 8A 76 2A E9 17 72 6E 80 38
0070 | 0A E8 39 15 F2 9A 76 D4 49 64 F6 EF E3 17 1C AC
0080 | 12 EB 32 93 FF 42 F2 43 07 93 21 94 78 BA BD 65
0090 | 75 F3 0B D1 FC A2 D1 38 64 21 AB FA 37 D0 64 D1
00A0 | 5F 95 E3 B2 0F 12 17 14 85 15 0E FA A6 F4 EA F7
00B0 | F6 B7 CC 3F 8B A6 63 32 29 62 00 53 80 A9 BE 9E
00C0 | 3D 7C 1F 4C 3C 08 08 62 DD 74 20 48 8B 07 2E C8
00D0 | 18 73 F8 72 B6 2A 7F CD 37 98 E7 E9 2C 5F 53 DD
00E0 | 73 0E 92 AB 88 24 06 C4 A1 06 44 A9 B7 1A 86 F3
00F0 | C9 62 29 F5 A1 1C 1B 1E DB 40 81 75 56 F1 50 75
0100 | A3 CB 9B 5C CA 73 BA 1C E7 B3 EF 3E B4 D0 66 1D
0110 | 01 F5 EC 8A 2A F6 49 28 C9 02 DD E0 3B CA F1 3A
0120 | A5 14 17 A8 11 16 81 7C A7 53 EF 92 40 20 F1 2A</code></pre>
<pre><code>0000 | 54 B6 43 66 A9 A9 E7 60 C1 90 09 93 EF 1D D3 FA
0010 | 51 4A 0E 34 69 41 64 B6 A2 26 86 5F 51 76 4C C1
0020 | 1D 1D 1C C1 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 25 88 E2 5A 92 63 3A D1 B5 FC 85 1F 5A 4B 9F 8B
0040 | B0 A2 61 45 EC 5E 16 03 69 57 7D FF 86 CA F7 03
0050 | A4 D0 2D B7 F5 12 E6 96 EC A8 56 DA 52 C0 D3 FC
0060 | FE 91 99 1D 1A 7D 72 07 AE E7 C2 0B 05 53 EE 13
0070 | DF FF 4C BE 37 71 29 9F A4 0C 2A C5 28 1D F3 7B
0080 | 68 E9 E3 14 44 0C FE 3C 59 C2 A2 AD 60 7C 13 60
0090 | 78 15 AB 8A 67 44 55 1F 2F 6F 89 0A A3 C2 BA 86
00A0 | 49 DF B1 C9 10 BD 1B 16 66 98 B7 A7 5B 00 BC A5
00B0 | D2 F0 44 4C 88 D9 7B 84 33 50 AE 83 09 5C 1B E4
00C0 | BA CD F2 57 20 BA 22 48 D4 73 CD D6 57 1A 35 E5
00D0 | 4C 2E 35 08 92 AD 75 2C F9 2D 6F 5D 11 89 C7 91
00E0 | 4A 2D 60 33 D7 85 91 FB 2E F7 DA FD 3F 3E 9A 43
00F0 | AA 84 87 5C DC AA D4 AC 42 3A 28 56 BF C1 10 22
0100 | 6C 96 88 98 1F 5A E9 81 FB 84 43 2D 49 FF 2F C0
0110 | 4A CF C6 A8 2B A8 9B C3 36 D9 33 59 C6 CE CE 1C
0120 | 1E CC E7 45 0B 07 9D B9 58 1D 01 A8 95 80 5C D6</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 = BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE0001005DE63467EDB3BFAA85242250</code> <code>ED73AD59FFB6421128FC16D29B586353</code> <code>2214029F0A553DA6AFE4C6C9B0B84711</code> <code>56308B17DBC829B8DDA7D48A762AE917</code> <code>726E80380AE83915F29A76D44964F6EF</code> <code>E3171CAC12EB3293FF42F24307932194</code> <code>78BABD6575F30BD1FCA2D1386421ABFA</code> <code>37D064D15F95E3B20F12171485150EFA</code> <code>A6F4EAF7F6B7CC3F8BA6633229620053</code> <code>80A9BE9E3D7C1F4C3C080862DD742048</code> <code>8B072EC81873F872B62A7FCD3798E7E9</code> <code>2C5F53DD730E92AB882406C4A10644A9</code> <code>B71A86F3C96229F5A11C1B1EDB408175</code> <code>56F15075A3CB9B5CCA73BA1CE7B3EF3E</code> <code>B4D0661D01F5EC8A2AF64928C902DDE0</code> <code>3BCAF13AA51417A81116817CA753EF92</code><br> <code>4020F12A</code></td>
<td><code>FE0001002588E25A92633AD1B5FC851F</code> <code>5A4B9F8BB0A26145EC5E160369577DFF</code> <code>86CAF703A4D02DB7F512E696ECA856DA</code> <code>52C0D3FCFE91991D1A7D7207AEE7C20B</code> <code>0553EE13DFFF4CBE3771299FA40C2AC5</code> <code>281DF37B68E9E314440CFE3C59C2A2AD</code> <code>607C13607815AB8A6744551F2F6F890A</code> <code>A3C2BA8649DFB1C910BD1B166698B7A7</code> <code>5B00BCA5D2F0444C88D97B843350AE83</code> <code>095C1BE4BACDF25720BA2248D473CDD6</code> <code>571A35E54C2E350892AD752CF92D6F5D</code> <code>1189C7914A2D6033D78591FB2EF7DAFD</code> <code>3F3E9A43AA84875CDCAAD4AC423A2856</code> <code>BFC110226C9688981F5AE981FB84432D</code> <code>49FF2FC04ACFC6A82BA89BC336D93359</code> <code>C6CECE1C1ECCE7450B079DB9581D01A8</code><br> <code>95805CD6</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 = BA0D89B52B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B
<!-- 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 = 54B643662B61E8CE469230D3F02EB0DD8B347C7A0B13979CAF038B9CB1CFFB2E5A4C90B10000000000000000FE0001005DE63467EDB3BFAA85242250ED73AD59FFB6421128FC16D29B5863532214029F0A553DA6AFE4C6C9B0B8471156308B17DBC829B8DDA7D48A762AE917726E80380AE83915F29A76D44964F6EFE3171CAC12EB3293FF42F2430793219478BABD6575F30BD1FCA2D1386421ABFA37D064D15F95E3B20F12171485150EFAA6F4EAF7F6B7CC3F8BA663322962005380A9BE9E3D7C1F4C3C080862DD7420488B072EC81873F872B62A7FCD3798E7E92C5F53DD730E92AB882406C4A10644A9B71A86F3C96229F5A11C1B1EDB40817556F15075A3CB9B5CCA73BA1CE7B3EF3EB4D0661D01F5EC8A2AF64928C902DDE03BCAF13AA51417A81116817CA753EF924020F12A
padding = 31258D84C9988CCA58689670
tmp_aes_key = 0EC4F0C14F035104D377C5113F23FFDF8E92F502C8482FACE4396EE318ACBEA1
tmp_aes_iv = FC4DDAFCB1351D8B0E53DB5B10E1B7F5EFA5AB0F2B8188414A4BC90C16401EE2</code></pre>
<pre><code>data = 54B64366A9A9E760C1900993EF1DD3FA514A0E34694164B6A226865F51764CC11D1D1CC10000000000000000FE0001002588E25A92633AD1B5FC851F5A4B9F8BB0A26145EC5E160369577DFF86CAF703A4D02DB7F512E696ECA856DA52C0D3FCFE91991D1A7D7207AEE7C20B0553EE13DFFF4CBE3771299FA40C2AC5281DF37B68E9E314440CFE3C59C2A2AD607C13607815AB8A6744551F2F6F890AA3C2BA8649DFB1C910BD1B166698B7A75B00BCA5D2F0444C88D97B843350AE83095C1BE4BACDF25720BA2248D473CDD6571A35E54C2E350892AD752CF92D6F5D1189C7914A2D6033D78591FB2EF7DAFD3F3E9A43AA84875CDCAAD4AC423A2856BFC110226C9688981F5AE981FB84432D49FF2FC04ACFC6A82BA89BC336D93359C6CECE1C1ECCE7450B079DB9581D01A895805CD6
padding = 970F83BB03E563DE1C1C370E
tmp_aes_key = E96A1792988B55D95430AE549C488BF681641EC28E79158F9E3CC33BFDF87960
tmp_aes_iv = 8861AD3E24391A7C3CC470124711FB6AC4F42268A01FFE4DD29D9FCA288034A2</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 = 03B6A54797F1485038D9AE309CA59FDA675B09F363EC6A9728D282D71AEC467BC5451C0C80A8E87AC073591ED197E3DDE2E026B4C375B60089C5AF1899FBB86CFBD763F5E295BB8B256E40027C536B6835265FA270708ECE9BE46388706839EC90C9EA697B69985277F1AD4C96C939E6A4C5E0245BF4C4BFA36E7083EFD5701F72845137C88FFAEEEB15546DE8DD405120755D022C68888A55546C28A4982B2E06030297A18C720AE560E7C86764D3B239469E07BEE02D804104163C5176D6FF881724C279614AC53DDCBE47DDA625F5D2BFCF249904AABC474DCDA70298178F4D5EFB295E6ECB97742939B335163B204145B0A4ABEE779B14FB956FEDD6DB6C4960E029F16E14CD45A14BB8612F4814933541D4E9BBC32489E120604DF76FA043B9131A83CA20C3BF129C5846DF6E802259401E482BA5314901DB1ED9713A8ACCBAEC6E74AE2F18DB566EB2ED354768</code></pre>
<pre><code>encrypted_data = 3100EDA298CD8244750C6E6C869D860C090E77B7E459E730FF1536D707787EC4BCDC65955E0E0A6A35FD241EE8AA3D04F4182F096CB43E85AD31A07AFDE27D64196B4E7FB7076057F12C7DA829D0B188645DC2674E466D031C93CEF333AD57FABD08ED86A5431DA34BFFAE8BAD98FB379875DB69316DA8A4B2678A5DE565DC380659155C50855C279B7CC76C599E66DA2DCCD9ECEF66539B1C2DCE512FD7FB5F5F5426BB64C01BADA6D5D98665022C5EC2B201F162404A66CDC6B27F5CCAA9AF971EB7D7CC07098FB8D3D9BA6F511753F8D11E2797CC3632D5B87AB4B5AB11E708D81BF0CC62695D5150460BAD2C14D918B50BA4E57026992692CDF299537458BBD977907EA0DB2EAC49E29523AE767F57C60EE317F4E9F541115EE445B2D8B91983ADABDE5D05C2269FA3062F4FAACC148574F5127C814F2C9CE550F0D5E9D9F19C5031836655CD773082ABAC0BE5A9</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 A0 EB 0D 00 07 EB 6C 65
0010 | 78 01 00 00 1F 5F 04 F5 2B 61 E8 CE 46 92 30 D3
0020 | F0 2E B0 DD 8B 34 7C 7A 0B 13 97 9C AF 03 8B 9C
0030 | B1 CF FB 2E 5A 4C 90 B1 FE 50 01 00 03 B6 A5 47
0040 | 97 F1 48 50 38 D9 AE 30 9C A5 9F DA 67 5B 09 F3
0050 | 63 EC 6A 97 28 D2 82 D7 1A EC 46 7B C5 45 1C 0C
0060 | 80 A8 E8 7A C0 73 59 1E D1 97 E3 DD E2 E0 26 B4
0070 | C3 75 B6 00 89 C5 AF 18 99 FB B8 6C FB D7 63 F5
0080 | E2 95 BB 8B 25 6E 40 02 7C 53 6B 68 35 26 5F A2
0090 | 70 70 8E CE 9B E4 63 88 70 68 39 EC 90 C9 EA 69
00A0 | 7B 69 98 52 77 F1 AD 4C 96 C9 39 E6 A4 C5 E0 24
00B0 | 5B F4 C4 BF A3 6E 70 83 EF D5 70 1F 72 84 51 37
00C0 | C8 8F FA EE EB 15 54 6D E8 DD 40 51 20 75 5D 02
00D0 | 2C 68 88 8A 55 54 6C 28 A4 98 2B 2E 06 03 02 97
00E0 | A1 8C 72 0A E5 60 E7 C8 67 64 D3 B2 39 46 9E 07
00F0 | BE E0 2D 80 41 04 16 3C 51 76 D6 FF 88 17 24 C2
0100 | 79 61 4A C5 3D DC BE 47 DD A6 25 F5 D2 BF CF 24
0110 | 99 04 AA BC 47 4D CD A7 02 98 17 8F 4D 5E FB 29
0120 | 5E 6E CB 97 74 29 39 B3 35 16 3B 20 41 45 B0 A4
0130 | AB EE 77 9B 14 FB 95 6F ED D6 DB 6C 49 60 E0 29
0140 | F1 6E 14 CD 45 A1 4B B8 61 2F 48 14 93 35 41 D4
0150 | E9 BB C3 24 89 E1 20 60 4D F7 6F A0 43 B9 13 1A
0160 | 83 CA 20 C3 BF 12 9C 58 46 DF 6E 80 22 59 40 1E
0170 | 48 2B A5 31 49 01 DB 1E D9 71 3A 8A CC BA EC 6E
0180 | 74 AE 2F 18 DB 56 6E B2 ED 35 47 68</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 B0 17 03 00 5E 54 6E 65
0010 | 78 01 00 00 1F 5F 04 F5 A9 A9 E7 60 C1 90 09 93
0020 | EF 1D D3 FA 51 4A 0E 34 69 41 64 B6 A2 26 86 5F
0030 | 51 76 4C C1 1D 1D 1C C1 FE 50 01 00 31 00 ED A2
0040 | 98 CD 82 44 75 0C 6E 6C 86 9D 86 0C 09 0E 77 B7
0050 | E4 59 E7 30 FF 15 36 D7 07 78 7E C4 BC DC 65 95
0060 | 5E 0E 0A 6A 35 FD 24 1E E8 AA 3D 04 F4 18 2F 09
0070 | 6C B4 3E 85 AD 31 A0 7A FD E2 7D 64 19 6B 4E 7F
0080 | B7 07 60 57 F1 2C 7D A8 29 D0 B1 88 64 5D C2 67
0090 | 4E 46 6D 03 1C 93 CE F3 33 AD 57 FA BD 08 ED 86
00A0 | A5 43 1D A3 4B FF AE 8B AD 98 FB 37 98 75 DB 69
00B0 | 31 6D A8 A4 B2 67 8A 5D E5 65 DC 38 06 59 15 5C
00C0 | 50 85 5C 27 9B 7C C7 6C 59 9E 66 DA 2D CC D9 EC
00D0 | EF 66 53 9B 1C 2D CE 51 2F D7 FB 5F 5F 54 26 BB
00E0 | 64 C0 1B AD A6 D5 D9 86 65 02 2C 5E C2 B2 01 F1
00F0 | 62 40 4A 66 CD C6 B2 7F 5C CA A9 AF 97 1E B7 D7
0100 | CC 07 09 8F B8 D3 D9 BA 6F 51 17 53 F8 D1 1E 27
0110 | 97 CC 36 32 D5 B8 7A B4 B5 AB 11 E7 08 D8 1B F0
0120 | CC 62 69 5D 51 50 46 0B AD 2C 14 D9 18 B5 0B A4
0130 | E5 70 26 99 26 92 CD F2 99 53 74 58 BB D9 77 90
0140 | 7E A0 DB 2E AC 49 E2 95 23 AE 76 7F 57 C6 0E E3
0150 | 17 F4 E9 F5 41 11 5E E4 45 B2 D8 B9 19 83 AD AB
0160 | DE 5D 05 C2 26 9F A3 06 2F 4F AA CC 14 85 74 F5
0170 | 12 7C 81 4F 2C 9C E5 50 F0 D5 E9 D9 F1 9C 50 31
0180 | 83 66 55 CD 77 30 82 AB AC 0B E5 A9</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>A0EB0D0007EB6C65</code></td>
<td><code>B01703005E546E65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE50010003B6A54797F1485038D9AE30</code> <code>9CA59FDA675B09F363EC6A9728D282D7</code> <code>1AEC467BC5451C0C80A8E87AC073591E</code> <code>D197E3DDE2E026B4C375B60089C5AF18</code> <code>99FBB86CFBD763F5E295BB8B256E4002</code> <code>7C536B6835265FA270708ECE9BE46388</code> <code>706839EC90C9EA697B69985277F1AD4C</code> <code>96C939E6A4C5E0245BF4C4BFA36E7083</code> <code>EFD5701F72845137C88FFAEEEB15546D</code> <code>E8DD405120755D022C68888A55546C28</code> <code>A4982B2E06030297A18C720AE560E7C8</code> <code>6764D3B239469E07BEE02D804104163C</code> <code>5176D6FF881724C279614AC53DDCBE47</code> <code>DDA625F5D2BFCF249904AABC474DCDA7</code> <code>0298178F4D5EFB295E6ECB97742939B3</code> <code>35163B204145B0A4ABEE779B14FB956F</code> <code>EDD6DB6C4960E029F16E14CD45A14BB8</code> <code>612F4814933541D4E9BBC32489E12060</code> <code>4DF76FA043B9131A83CA20C3BF129C58</code> <code>46DF6E802259401E482BA5314901DB1E</code> <code>D9713A8ACCBAEC6E74AE2F18DB566EB2</code><br> <code>ED354768</code></td>
<td><code>FE5001003100EDA298CD8244750C6E6C</code> <code>869D860C090E77B7E459E730FF1536D7</code> <code>07787EC4BCDC65955E0E0A6A35FD241E</code> <code>E8AA3D04F4182F096CB43E85AD31A07A</code> <code>FDE27D64196B4E7FB7076057F12C7DA8</code> <code>29D0B188645DC2674E466D031C93CEF3</code> <code>33AD57FABD08ED86A5431DA34BFFAE8B</code> <code>AD98FB379875DB69316DA8A4B2678A5D</code> <code>E565DC380659155C50855C279B7CC76C</code> <code>599E66DA2DCCD9ECEF66539B1C2DCE51</code> <code>2FD7FB5F5F5426BB64C01BADA6D5D986</code> <code>65022C5EC2B201F162404A66CDC6B27F</code> <code>5CCAA9AF971EB7D7CC07098FB8D3D9BA</code> <code>6F511753F8D11E2797CC3632D5B87AB4</code> <code>B5AB11E708D81BF0CC62695D5150460B</code> <code>AD2C14D918B50BA4E57026992692CDF2</code> <code>99537458BBD977907EA0DB2EAC49E295</code> <code>23AE767F57C60EE317F4E9F541115EE4</code> <code>45B2D8B91983ADABDE5D05C2269FA306</code> <code>2F4FAACC148574F5127C814F2C9CE550</code> <code>F0D5E9D9F19C5031836655CD773082AB</code><br> <code>AC0BE5A9</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 = 10A41ACBEB34EDFDA504136358684DEE79845B3F59EA5ABEEC92302CABE37EA27DAEE8FA3B166A7C2CB36BA2259D8CF672BCE6DAFF76AB911B20752C48528E4319C5B88CA7DF1D97939BB5284B397A774EC894333C3528D39A976B94A60D065319CCE1D1B4D650F2ED5DE99232DB3C98D0D308586BEB91BA320A0B9871A81B2907767D27FE7A471B36DC0DCA1BBB50EE2602164C15AF164789481AEFE05C26BD78C2AFDA9B8E59239D29657EA48CE1BB7AFBDF725385BF274B47F81DA572D2B605AD0D204010A2CBC24615CA00891A7EA1894BE20C5B1417AC679DD701E4AE748AB72609AD05FEE7A10C29419A452E5EC329D98F7BE8BD9EA581BFE96876F1CE</code></pre>
<pre><code>auth_key = 7C74EC0C28CA50F65EC0A400A634F917DE855D8C4D09B0B0B0C1173D40CD5F4B90D8867F70AA2B60807F3F505D09ACD4926E6C90D99E68E2D613D587886228C9F276202908ACDE0D5B26D201FD990AD6E3179B986AF47C8FECDC163857289E908DDF6CC4A28135B319C8E6221A411D3E4D0463D10B92C96668383A77E7F91AAC2ADBD81D21A3C0536D3A3CE873D1442FB17FEA7315AF1A37F64C98D95BC6388C3FDDD03C6D1952D517AF0470EA2CD89CF74A3AC7358B10B9F6D631DCD74B68478CB5EAF9EBB2020217D943C552F3D121169928B9DD98E8514A4E3BC0831F51E88EBA9D913C48FA4DD607CA2E5C7B2628515521E3FF6222CAE80D764FB1A9C425</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 24 37 6D 08 EB 6C 65
0010 | 70 00 00 00 34 F7 CB 3B 2B 61 E8 CE 46 92 30 D3
0020 | F0 2E B0 DD 8B 34 7C 7A 0B 13 97 9C AF 03 8B 9C
0030 | B1 CF FB 2E 5A 4C 90 B1 F3 20 D2 E3 91 44 F6 0F
0040 | 39 72 C9 BD 33 79 36 E1</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 24 18 C2 5E 54 6E 65
0010 | 6C 00 00 00 34 F7 CB 3B A9 A9 E7 60 C1 90 09 93
0020 | EF 1D D3 FA 51 4A 0E 34 69 41 64 B6 A2 26 86 5F
0030 | 51 76 4C C1 1D 1D 1C C1 C8 E5 6F BE FD E6 B6 53
0040 | 16 C3 3D FE DF 77 06 E2</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>0124376D08EB6C65</code></td>
<td><code>012418C25E546E65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>70000000</code> (112 in decimal)</td>
<td><code>6C000000</code> (108 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>2B61E8CE469230D3F02EB0DD8B347C7A</code></td>
<td><code>A9A9E760C1900993EF1DD3FA514A0E34</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>0B13979CAF038B9CB1CFFB2E5A4C90B1</code></td>
<td><code>694164B6A226865F51764CC11D1D1CC1</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>F320D2E39144F60F3972C9BD337936E1</code></td>
<td><code>C8E56FBEFDE6B65316C33DFEDF7706E2</code></td>
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
</tr>
</tbody>

View file

@ -153,10 +153,6 @@
<td>Message entity representing <del>strikethrough</del> text.</td>
</tr>
<tr>
<td><a href="/constructor/messageEntityBlockquote">messageEntityBlockquote</a></td>
<td>Message entity representing a block quote.</td>
</tr>
<tr>
<td><a href="/constructor/messageEntityBankCard">messageEntityBankCard</a></td>
<td>Indicates a credit card number</td>
</tr>