mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-01-05 18:38:19 +01:00
Update content of files
This commit is contained in:
parent
5873868cb9
commit
7ea590b4f5
48 changed files with 379 additions and 342 deletions
|
@ -630,8 +630,8 @@
|
|||
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
|
||||
<ul>
|
||||
<li>Added <a href="/method/messages.getSavedReactionTags">messages.getSavedReactionTags</a> - Fetch the full list of <a href="/api/saved-messages#tags">saved message tags</a> created by the user.</li>
|
||||
<li>Added <a href="/method/messages.updateSavedReactionTag">messages.updateSavedReactionTag</a> - </li>
|
||||
<li>Added <a href="/method/messages.getDefaultTagReactions">messages.getDefaultTagReactions</a> - </li>
|
||||
<li>Added <a href="/method/messages.updateSavedReactionTag">messages.updateSavedReactionTag</a> - Update the <a href="/api/saved-messages#tags">description of a saved message tag »</a>.</li>
|
||||
<li>Added <a href="/method/messages.getDefaultTagReactions">messages.getDefaultTagReactions</a> - Fetch a default recommended list of <a href="/api/saved-messages#tags">saved message tag reactions</a>.</li>
|
||||
</ul>
|
||||
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
|
||||
<ul>
|
||||
|
|
|
@ -88,7 +88,7 @@ for id in ids:
|
|||
hash = hash ^ (hash << 35)
|
||||
hash = hash ^ (hash >> 4)
|
||||
hash = hash + id</code></pre>
|
||||
<p>In some cases, the result container already has a <code>hash</code> field, that can be used instead.</p>
|
||||
<p>In some cases, if the result container already has a <code>hash</code> field, that <strong>must</strong> be used instead, as the server-side generation algorithm will be different from the one specified above. </p>
|
||||
<p>When the client passes a correct value, the API will return one of <code>*NotModified</code> constructors, e.g. <a href="/constructor/messages.messagesNotModified">messages.messagesNotModified</a> instead of the actual results.</p>
|
||||
<h3><a class="anchor" href="#example-methods" id="example-methods" name="example-methods"><i class="anchor-icon"></i></a>Example methods</h3>
|
||||
<ul>
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
<tr>
|
||||
<td><strong>title</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/string">string</a></td>
|
||||
<td><a href="/api/folders">Folder</a> name</td>
|
||||
<td><a href="/api/folders">Folder</a> name (max 12 UTF-8 chars)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>emoticon</strong></td>
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
<tr>
|
||||
<td><strong>title</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/string">string</a></td>
|
||||
<td>Name of the folder</td>
|
||||
<td>Name of the folder (max 12 UTF-8 chars)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>emoticon</strong></td>
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.emojiStatuses">account.emojiStatuses</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#accountemojistatuses" id="accountemojistatuses" name="accountemojistatuses"><i class="anchor-icon"></i></a><a href="/constructor/account.emojiStatuses">account.emojiStatuses</a></h4>
|
||||
<p>A list of <a href="/api/emoji-status">emoji statuses</a></p>
|
||||
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
|
||||
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
|
||||
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
|
||||
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.themes">account.themes</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#accountthemes" id="accountthemes" name="accountthemes"><i class="anchor-icon"></i></a><a href="/constructor/account.themes">account.themes</a></h4>
|
||||
<p>Installed themes</p>
|
||||
<h4><a class="anchor" href="#themes" id="themes" name="themes"><i class="anchor-icon"></i></a><a href="/api/themes">Themes</a></h4>
|
||||
<p>Telegram apps support generating, sharing and synchronizing app themes.</p></div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.emojiStatuses">account.emojiStatuses</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#accountemojistatuses" id="accountemojistatuses" name="accountemojistatuses"><i class="anchor-icon"></i></a><a href="/constructor/account.emojiStatuses">account.emojiStatuses</a></h4>
|
||||
<p>A list of <a href="/api/emoji-status">emoji statuses</a></p>
|
||||
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
|
||||
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
|
||||
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
|
||||
<h4><a class="anchor" href="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
|
||||
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
|
||||
<h4><a class="anchor" href="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.emojiStatuses">account.emojiStatuses</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#accountemojistatuses" id="accountemojistatuses" name="accountemojistatuses"><i class="anchor-icon"></i></a><a href="/constructor/account.emojiStatuses">account.emojiStatuses</a></h4>
|
||||
<p>A list of <a href="/api/emoji-status">emoji statuses</a></p>
|
||||
<h4><a class="anchor" href="#emoji-status" id="emoji-status" name="emoji-status"><i class="anchor-icon"></i></a><a href="/api/emoji-status">Emoji status</a></h4>
|
||||
<p>Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.</p></div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.savedRingtones">account.savedRingtones</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -80,7 +80,9 @@
|
|||
<p><a href="/type/account.SavedRingtones">account.SavedRingtones</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#accountsavedringtones" id="accountsavedringtones" name="accountsavedringtones"><i class="anchor-icon"></i></a><a href="/constructor/account.savedRingtones">account.savedRingtones</a></h4>
|
||||
<p>A list of saved notification sounds</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.themes">account.themes</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -85,7 +85,9 @@
|
|||
<p><a href="/type/account.Themes">account.Themes</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#accountthemes" id="accountthemes" name="accountthemes"><i class="anchor-icon"></i></a><a href="/constructor/account.themes">account.themes</a></h4>
|
||||
<p>Installed themes</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/account.wallPapers">account.wallPapers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#accountwallpapers" id="accountwallpapers" name="accountwallpapers"><i class="anchor-icon"></i></a><a href="/constructor/account.wallPapers">account.wallPapers</a></h4>
|
||||
<p>Installed <a href="/api/wallpapers">wallpapers</a></p>
|
||||
<h4><a class="anchor" href="#wallpapers" id="wallpapers" name="wallpapers"><i class="anchor-icon"></i></a><a href="/api/wallpapers">Wallpapers</a></h4>
|
||||
<p>Telegram apps support generating, sharing and synchronizing chat backgrounds.</p></div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td>If there already is a full contact list on the client, a <a href="/api/offsets#hash-generation">hash</a> of a the list of contact IDs in ascending order may be passed in this parameter. If the contact set was not changed, <a href="/constructor/contacts.contactsNotModified">(contacts.contactsNotModified)</a> will be returned.</td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br>Note that the hash is computed <a href="/api/offsets#hash-generation">using the usual algorithm</a>, passing to the algorithm first the previously returned <a href="/constructor/contacts.contacts">contacts.contacts</a>.<code>saved_count</code> field, then max <code>100000</code> sorted user IDs from the contact list, including the ID of the currently logged in user if it is saved as a contact. <br>Example: <a href="https://github.com/tdlib/td/blob/63c7d0301825b78c30dc7307f1f1466be049eb79/td/telegram/UserManager.cpp#L5754">tdlib implementation</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,8 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#contactscontactsnotmodified" id="contactscontactsnotmodified" name="contactscontactsnotmodified"><i class="anchor-icon"></i></a><a href="/constructor/contacts.contactsNotModified">contacts.contactsNotModified</a></h4>
|
||||
<p>Contact list on the server is the same as the list on the client.</p></div>
|
||||
<h4><a class="anchor" href="#contactscontacts" id="contactscontacts" name="contactscontacts"><i class="anchor-icon"></i></a><a href="/constructor/contacts.contacts">contacts.contacts</a></h4>
|
||||
<p>The current user's contact list and info on users.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.appConfig">help.appConfig</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#helpappconfig" id="helpappconfig" name="helpappconfig"><i class="anchor-icon"></i></a><a href="/constructor/help.appConfig">help.appConfig</a></h4>
|
||||
<p>Contains various <a href="/api/config#client-configuration">client configuration parameters</a></p>
|
||||
<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4>
|
||||
<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</p></div>
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.countriesList">help.countriesList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -85,7 +85,9 @@
|
|||
<p><a href="/type/help.CountriesList">help.CountriesList</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#helpcountrieslist" id="helpcountrieslist" name="helpcountrieslist"><i class="anchor-icon"></i></a><a href="/constructor/help.countriesList">help.countriesList</a></h4>
|
||||
<p>Name, ISO code, localized name and phone codes/patterns of all available countries</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.passportConfig">help.passportConfig</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#helppassportconfig" id="helppassportconfig" name="helppassportconfig"><i class="anchor-icon"></i></a><a href="/constructor/help.passportConfig">help.passportConfig</a></h4>
|
||||
<p>Telegram <a href="/passport">passport</a> configuration</p>
|
||||
<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>help.getPeerColors</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Get the set of accent color palettes » that can be used for messages">
|
||||
<meta property="description" content="Get the set of accent color palettes » that can be used for message accents.">
|
||||
<meta property="og:title" content="help.getPeerColors">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Get the set of accent color palettes » that can be used for messages">
|
||||
<meta property="og:description" content="Get the set of accent color palettes » that can be used for message accents.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.peerColors">help.peerColors</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#helppeercolors" id="helppeercolors" name="helppeercolors"><i class="anchor-icon"></i></a><a href="/constructor/help.peerColors">help.peerColors</a></h4>
|
||||
<p>Contains info about multiple <a href="/api/colors">color palettes »</a>.</p>
|
||||
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
|
||||
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
|
||||
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>help.getPeerProfileColors</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Get the set of accent color palettes » that can be used for profiles">
|
||||
<meta property="description" content="Get the set of accent color palettes » that can be used in profile page backgrounds.">
|
||||
<meta property="og:title" content="help.getPeerProfileColors">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Get the set of accent color palettes » that can be used for profiles">
|
||||
<meta property="og:description" content="Get the set of accent color palettes » that can be used in profile page backgrounds.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.peerColors">help.peerColors</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#helppeercolors" id="helppeercolors" name="helppeercolors"><i class="anchor-icon"></i></a><a href="/constructor/help.peerColors">help.peerColors</a></h4>
|
||||
<p>Contains info about multiple <a href="/api/colors">color palettes »</a>.</p>
|
||||
<h4><a class="anchor" href="#accent-colors" id="accent-colors" name="accent-colors"><i class="anchor-icon"></i></a><a href="/api/colors">Accent colors</a></h4>
|
||||
<p>Telegram users and channels can change the accent color and background pattern of their profile page and their messages!</p></div>
|
||||
|
||||
|
|
|
@ -10,10 +10,8 @@ Type
|
|||
Description
|
||||
hash
|
||||
int
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
help.TimezonesList
|
||||
Related…">
|
||||
Hash for pagination, for more info click here.
|
||||
Note: the usual hash generation…">
|
||||
<meta property="og:title" content="help.getTimezonesList">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
|
@ -22,10 +20,8 @@ Type
|
|||
Description
|
||||
hash
|
||||
int
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
help.TimezonesList
|
||||
Related…">
|
||||
Hash for pagination, for more info click here.
|
||||
Note: the usual hash generation…">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -89,7 +85,7 @@ Related…">
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/help.timezonesList">help.timezonesList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -97,7 +93,8 @@ Related…">
|
|||
<p><a href="/type/help.TimezonesList">help.TimezonesList</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#helptimezoneslist" id="helptimezoneslist" name="helptimezoneslist"><i class="anchor-icon"></i></a><a href="/constructor/help.timezonesList">help.timezonesList</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/attachMenuBots">attachMenuBots</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#attachmenubots" id="attachmenubots" name="attachmenubots"><i class="anchor-icon"></i></a><a href="/constructor/attachMenuBots">attachMenuBots</a></h4>
|
||||
<p>Represents a list of <a href="/api/bots/attach">bot mini apps that can be launched from the attachment menu »</a></p>
|
||||
<h4><a class="anchor" href="#bot-attachment-menu-and-side-menu-entries" id="bot-attachment-menu-and-side-menu-entries" name="bot-attachment-menu-and-side-menu-entries"><i class="anchor-icon"></i></a><a href="/api/bots/attach">Bot attachment menu and side menu entries</a></h4>
|
||||
<p>Bots can install attachment menu and side menu entries, offering conveniently accessible, versatile web apps.</p></div>
|
||||
|
||||
|
|
|
@ -10,9 +10,8 @@ Type
|
|||
Description
|
||||
hash
|
||||
int
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
messages.AvailableEffects…">
|
||||
Hash for pagination, for more info click here.
|
||||
Note: the usual hash generation…">
|
||||
<meta property="og:title" content="messages.getAvailableEffects">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
|
@ -21,9 +20,8 @@ Type
|
|||
Description
|
||||
hash
|
||||
int
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
messages.AvailableEffects…">
|
||||
Hash for pagination, for more info click here.
|
||||
Note: the usual hash generation…">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -87,7 +85,7 @@ messages.AvailableEffects…">
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.availableEffects">messages.availableEffects</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -95,7 +93,8 @@ messages.AvailableEffects…">
|
|||
<p><a href="/type/messages.AvailableEffects">messages.AvailableEffects</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesavailableeffects" id="messagesavailableeffects" name="messagesavailableeffects"><i class="anchor-icon"></i></a><a href="/constructor/messages.availableEffects">messages.availableEffects</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.availableReactions">messages.availableReactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesavailablereactions" id="messagesavailablereactions" name="messagesavailablereactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.availableReactions">messages.availableReactions</a></h4>
|
||||
<p>Animations and metadata associated with <a href="/api/reactions">message reactions »</a></p>
|
||||
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
|
||||
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>
|
||||
|
||||
|
|
|
@ -4,28 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>messages.getDefaultTagReactions</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
hash
|
||||
long
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
messages.Reactions
|
||||
Related…">
|
||||
<meta property="description" content="Fetch a default recommended list of saved message tag reactions.">
|
||||
<meta property="og:title" content="messages.getDefaultTagReactions">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
hash
|
||||
long
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
messages.Reactions
|
||||
Related…">
|
||||
<meta property="og:description" content="Fetch a default recommended list of saved message tag reactions.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -60,7 +42,8 @@ Related…">
|
|||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.getDefaultTagReactions" >messages.getDefaultTagReactions</a></li></ul></div>
|
||||
<h1 id="dev_page_title">messages.getDefaultTagReactions</h1>
|
||||
|
||||
<div id="dev_page_content"><p><div class="clearfix">
|
||||
<div id="dev_page_content"><p>Fetch a default recommended list of <a href="/api/saved-messages#tags">saved message tag reactions</a>.</p>
|
||||
<p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 181 <b class="caret"></b></a>
|
||||
|
@ -89,7 +72,7 @@ Related…">
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.reactions">messages.reactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -97,7 +80,11 @@ Related…">
|
|||
<p><a href="/type/messages.Reactions">messages.Reactions</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesreactions" id="messagesreactions" name="messagesreactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.reactions">messages.reactions</a></h4>
|
||||
<p>List of <a href="/api/reactions">message reactions</a></p>
|
||||
<h4><a class="anchor" href="#saved-messages" id="saved-messages" name="saved-messages"><i class="anchor-icon"></i></a><a href="/api/saved-messages">Saved messages</a></h4>
|
||||
<p>The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.emojiGroups">messages.emojiGroups</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -82,6 +82,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesemojigroups" id="messagesemojigroups" name="messagesemojigroups"><i class="anchor-icon"></i></a><a href="/constructor/messages.emojiGroups">messages.emojiGroups</a></h4>
|
||||
<p>Represents a list of <a href="/api/custom-emoji#emoji-categories">emoji categories</a>.</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p></div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.emojiGroups">messages.emojiGroups</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -82,6 +82,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesemojigroups" id="messagesemojigroups" name="messagesemojigroups"><i class="anchor-icon"></i></a><a href="/constructor/messages.emojiGroups">messages.emojiGroups</a></h4>
|
||||
<p>Represents a list of <a href="/api/custom-emoji#emoji-categories">emoji categories</a>.</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p>
|
||||
<h4><a class="anchor" href="#uploading-and-downloading-files" id="uploading-and-downloading-files" name="uploading-and-downloading-files"><i class="anchor-icon"></i></a><a href="/api/files">Uploading and Downloading Files</a></h4>
|
||||
|
|
|
@ -10,10 +10,8 @@ Type
|
|||
Description
|
||||
hash
|
||||
int
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
messages.EmojiGroups
|
||||
Related…">
|
||||
Hash for pagination, for more info click here.
|
||||
Note: the usual hash generation…">
|
||||
<meta property="og:title" content="messages.getEmojiStickerGroups">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Parameters
|
||||
|
@ -22,10 +20,8 @@ Type
|
|||
Description
|
||||
hash
|
||||
int
|
||||
Hash for pagination, for more info click here
|
||||
Result
|
||||
messages.EmojiGroups
|
||||
Related…">
|
||||
Hash for pagination, for more info click here.
|
||||
Note: the usual hash generation…">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -89,7 +85,7 @@ Related…">
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/int">int</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.emojiGroups">messages.emojiGroups</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -97,7 +93,9 @@ Related…">
|
|||
<p><a href="/type/messages.EmojiGroups">messages.EmojiGroups</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesemojigroups" id="messagesemojigroups" name="messagesemojigroups"><i class="anchor-icon"></i></a><a href="/constructor/messages.emojiGroups">messages.emojiGroups</a></h4>
|
||||
<p>Represents a list of <a href="/api/custom-emoji#emoji-categories">emoji categories</a>.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.allStickers">messages.allStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -81,6 +81,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesallstickers" id="messagesallstickers" name="messagesallstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.allStickers">messages.allStickers</a></h4>
|
||||
<p>Info about all installed stickers</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p></div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -80,7 +80,9 @@
|
|||
<p><a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesfeaturedstickers" id="messagesfeaturedstickers" name="messagesfeaturedstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></h4>
|
||||
<p>Featured stickersets</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -80,7 +80,9 @@
|
|||
<p><a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesfeaturedstickers" id="messagesfeaturedstickers" name="messagesfeaturedstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></h4>
|
||||
<p>Featured stickersets</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.allStickers">messages.allStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -80,7 +80,9 @@
|
|||
<p><a href="/type/messages.AllStickers">messages.AllStickers</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesallstickers" id="messagesallstickers" name="messagesallstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.allStickers">messages.allStickers</a></h4>
|
||||
<p>Info about all installed stickers</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -90,7 +90,9 @@
|
|||
<p><a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesfeaturedstickers" id="messagesfeaturedstickers" name="messagesfeaturedstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></h4>
|
||||
<p>Featured stickersets</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.reactions">messages.reactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -86,6 +86,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesreactions" id="messagesreactions" name="messagesreactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.reactions">messages.reactions</a></h4>
|
||||
<p>List of <a href="/api/reactions">message reactions</a></p>
|
||||
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
|
||||
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.recentStickers">messages.recentStickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -90,7 +90,9 @@
|
|||
<p><a href="/type/messages.RecentStickers">messages.RecentStickers</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesrecentstickers" id="messagesrecentstickers" name="messagesrecentstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.recentStickers">messages.recentStickers</a></h4>
|
||||
<p>Recently used stickers</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>messages.getSavedGifs</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Get saved GIFs">
|
||||
<meta property="description" content="Get saved GIFs.">
|
||||
<meta property="og:title" content="messages.getSavedGifs">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Get saved GIFs">
|
||||
<meta property="og:description" content="Get saved GIFs.">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -42,7 +42,7 @@
|
|||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.getSavedGifs" >messages.getSavedGifs</a></li></ul></div>
|
||||
<h1 id="dev_page_title">messages.getSavedGifs</h1>
|
||||
|
||||
<div id="dev_page_content"><p>Get saved GIFs</p>
|
||||
<div id="dev_page_content"><p>Get saved GIFs.</p>
|
||||
<p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
|
@ -72,7 +72,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.savedGifs">messages.savedGifs</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -80,7 +80,9 @@
|
|||
<p><a href="/type/messages.SavedGifs">messages.SavedGifs</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagessavedgifs" id="messagessavedgifs" name="messagessavedgifs"><i class="anchor-icon"></i></a><a href="/constructor/messages.savedGifs">messages.savedGifs</a></h4>
|
||||
<p>Saved gifs</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -82,17 +82,18 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.savedReactionTags">messages.savedReactionTags</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3>
|
||||
<p><a href="/type/messages.SavedReactionTags">messages.SavedReactionTags</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#saved-messages" id="saved-messages" name="saved-messages"><i class="anchor-icon"></i></a><a href="/api/saved-messages">Saved messages</a></h4>
|
||||
<p>The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.</p>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#saved-messages" id="saved-messages" name="saved-messages"><i class="anchor-icon"></i></a><a href="/api/saved-messages">Saved messages</a></h4>
|
||||
<p>The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.</p></div>
|
||||
<h4><a class="anchor" href="#messagessavedreactiontags" id="messagessavedreactiontags" name="messagessavedreactiontags"><i class="anchor-icon"></i></a><a href="/constructor/messages.savedReactionTags">messages.savedReactionTags</a></h4></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.stickers">messages.stickers</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -102,7 +102,9 @@
|
|||
</table>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesstickers" id="messagesstickers" name="messagesstickers"><i class="anchor-icon"></i></a><a href="/constructor/messages.stickers">messages.stickers</a></h4>
|
||||
<p>Found stickers</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.reactions">messages.reactions</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -86,6 +86,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesreactions" id="messagesreactions" name="messagesreactions"><i class="anchor-icon"></i></a><a href="/constructor/messages.reactions">messages.reactions</a></h4>
|
||||
<p>List of <a href="/api/reactions">message reactions</a></p>
|
||||
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
|
||||
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p></div>
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/emojiList">emojiList</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -104,6 +104,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#emojilist" id="emojilist" name="emojilist"><i class="anchor-icon"></i></a><a href="/constructor/emojiList">emojiList</a></h4>
|
||||
<p>Represents a list of <a href="/api/custom-emoji">custom emojis</a>.</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p></div>
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -96,6 +96,8 @@
|
|||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesfoundstickersets" id="messagesfoundstickersets" name="messagesfoundstickersets"><i class="anchor-icon"></i></a><a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a></h4>
|
||||
<p>Found stickersets</p>
|
||||
<h4><a class="anchor" href="#custom-emojis" id="custom-emojis" name="custom-emojis"><i class="anchor-icon"></i></a><a href="/api/custom-emoji">Custom emojis</a></h4>
|
||||
<p>Telegram allows including animated and static custom emojis inside of messages.</p></div>
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
<tr>
|
||||
<td><strong>hash</strong></td>
|
||||
<td style="text-align: center;"><a href="/type/long">long</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td>
|
||||
<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a>.<br><strong>Note</strong>: the usual hash generation algorithm cannot be used in this case, please re-use the <a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a>.<code>hash</code> field returned by a previous call to the method, or pass 0 if this is the first call.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -95,7 +95,9 @@
|
|||
<p><a href="/type/messages.FoundStickerSets">messages.FoundStickerSets</a></p>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#pagination-in-the-api" id="pagination-in-the-api" name="pagination-in-the-api"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination in the API</a></h4>
|
||||
<p>How to fetch results from large lists of objects.</p></div>
|
||||
<p>How to fetch results from large lists of objects.</p>
|
||||
<h4><a class="anchor" href="#messagesfoundstickersets" id="messagesfoundstickersets" name="messagesfoundstickersets"><i class="anchor-icon"></i></a><a href="/constructor/messages.foundStickerSets">messages.foundStickerSets</a></h4>
|
||||
<p>Found stickersets</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -4,24 +4,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>messages.updateSavedReactionTag</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="description" content="Update the description of a saved message tag.
|
||||
Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields…">
|
||||
<meta property="description" content="Update the description of a saved message tag ».">
|
||||
<meta property="og:title" content="messages.updateSavedReactionTag">
|
||||
<meta property="og:image" content="">
|
||||
<meta property="og:description" content="Update the description of a saved message tag.
|
||||
Parameters
|
||||
Name
|
||||
Type
|
||||
Description
|
||||
flags
|
||||
#
|
||||
Flags, see TL conditional fields…">
|
||||
<meta property="og:description" content="Update the description of a saved message tag ».">
|
||||
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
|
||||
|
@ -56,7 +42,7 @@ Flags, see TL conditional fields…">
|
|||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.updateSavedReactionTag" >messages.updateSavedReactionTag</a></li></ul></div>
|
||||
<h1 id="dev_page_title">messages.updateSavedReactionTag</h1>
|
||||
|
||||
<div id="dev_page_content"><p>Update the <a href="/api/saved-messages#tags">description of a saved message tag</a>. </p>
|
||||
<div id="dev_page_content"><p>Update the <a href="/api/saved-messages#tags">description of a saved message tag »</a>.</p>
|
||||
<p><div class="clearfix">
|
||||
<ul class="dev_layer_select slightly-pull-right nav nav-pills">
|
||||
<li class="dropdown">
|
||||
|
@ -118,7 +104,12 @@ Flags, see TL conditional fields…">
|
|||
<td>The specified reaction is invalid.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
</table>
|
||||
<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3>
|
||||
<h4><a class="anchor" href="#message-reactions" id="message-reactions" name="message-reactions"><i class="anchor-icon"></i></a><a href="/api/reactions">Message reactions</a></h4>
|
||||
<p>Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.</p>
|
||||
<h4><a class="anchor" href="#saved-messages" id="saved-messages" name="saved-messages"><i class="anchor-icon"></i></a><a href="/api/saved-messages">Saved messages</a></h4>
|
||||
<p>The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -331,7 +331,7 @@ Look for updates of telegram's terms of service…">
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/method/messages.getSavedGifs">messages.getSavedGifs</a></td>
|
||||
<td>Get saved GIFs</td>
|
||||
<td>Get saved GIFs.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.saveGif">messages.saveGif</a></td>
|
||||
|
@ -3166,11 +3166,11 @@ Look for updates of telegram's terms of service…">
|
|||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.updateSavedReactionTag">messages.updateSavedReactionTag</a></td>
|
||||
<td> </td>
|
||||
<td>Update the <a href="/api/saved-messages#tags">description of a saved message tag »</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.getDefaultTagReactions">messages.getDefaultTagReactions</a></td>
|
||||
<td> </td>
|
||||
<td>Fetch a default recommended list of <a href="/api/saved-messages#tags">saved message tag reactions</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a></td>
|
||||
|
|
|
@ -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 D0 C6 00 00 29 CB 75 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE 46 EB 07 1F 8D C7 CB 46
|
||||
0020 | EC BA B6 10 48 F0 E8 6F</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 68 82 01 00 9A ED 77 66
|
||||
0010 | 14 00 00 00 F1 8E 7E BE BD D3 43 62 8E 05 18 35
|
||||
0020 | 1B EB 12 EF BC AF BB 7C</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>D0C6000029CB7566</code></td>
|
||||
<td><code>688201009AED7766</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>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</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 44 F2 B3 29 CB 75 66
|
||||
0010 | A8 00 00 00 63 24 16 05 46 EB 07 1F 8D C7 CB 46
|
||||
0020 | EC BA B6 10 48 F0 E8 6F 65 45 4C 9B E6 2C B4 D3
|
||||
0030 | D8 F1 42 DB F1 78 B0 D9 08 15 6D 6A B1 2F 5F D6
|
||||
0040 | 55 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 5C ED 7B 9A ED 77 66
|
||||
0010 | 68 00 00 00 63 24 16 05 BD D3 43 62 8E 05 18 35
|
||||
0020 | 1B EB 12 EF BC AF BB 7C 20 FB B9 18 86 EE 0C 2E
|
||||
0030 | BF BD 51 E8 A5 03 40 98 08 1E CE 43 71 B8 6C 45
|
||||
0040 | E3 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>0144F2B329CB7566</code></td>
|
||||
<td><code>015CED7B9AED7766</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>A8000000</code> (168 in decimal)</td>
|
||||
<td><code>68000000</code> (104 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -150,19 +150,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>08156D6AB12F5FD655000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1544007556494513749</td>
|
||||
<td><code>081ECE4371B86C45E3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2219785822044702179</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 = 1544007556494513749</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>1544007556494513749 = 1237375147 * 1247808767</code></p>
|
||||
<pre><code>p = 1237375147
|
||||
q = 1247808767</code></pre>
|
||||
<pre><code>pq = 2219785822044702179</code></pre>
|
||||
<p>Decompose into 2 prime cofactors <code>p < q</code>: <code>2219785822044702179 = 1275787277 * 1739934127</code></p>
|
||||
<pre><code>p = 1275787277
|
||||
q = 1739934127</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 15 6D 6A B1 2F 5F D6 55 00 00 00
|
||||
0010 | 04 49 C0 D8 AB 00 00 00 04 4A 60 0C FF 00 00 00
|
||||
0020 | 46 EB 07 1F 8D C7 CB 46 EC BA B6 10 48 F0 E8 6F
|
||||
0030 | 65 45 4C 9B E6 2C B4 D3 D8 F1 42 DB F1 78 B0 D9
|
||||
0040 | F4 4F 47 4B E3 B7 EC 63 6C 33 AF 62 46 D4 94 19
|
||||
0050 | 28 F4 78 9F 68 31 FD BC 95 10 C4 8F 3D 06 C9 86
|
||||
<pre><code>0000 | 95 5F F5 A9 08 1E CE 43 71 B8 6C 45 E3 00 00 00
|
||||
0010 | 04 4C 0A F8 0D 00 00 00 04 67 B5 49 AF 00 00 00
|
||||
0020 | BD D3 43 62 8E 05 18 35 1B EB 12 EF BC AF BB 7C
|
||||
0030 | 20 FB B9 18 86 EE 0C 2E BF BD 51 E8 A5 03 40 98
|
||||
0040 | 34 5D F4 48 5C 4F 01 3B D2 B2 71 5D 91 98 5D 71
|
||||
0050 | 9A 75 09 9C 72 DF AD 46 26 AA 13 3F 70 6D 90 1E
|
||||
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 = 1247808767</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>08156D6AB12F5FD655000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1544007556494513749</td>
|
||||
<td><code>081ECE4371B86C45E3000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 2219785822044702179</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>0449C0D8AB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1237375147</td>
|
||||
<td><code>044C0AF80D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1275787277</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>044A600CFF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1247808767</td>
|
||||
<td><code>0467B549AF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1739934127</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>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>F44F474BE3B7EC636C33AF6246D49419</code> <code>28F4789F6831FDBC9510C48F3D06C986</code></td>
|
||||
<td><code>345DF4485C4F013BD2B2715D91985D71</code> <code>9A75099C72DFAD4626AA133F706D901E</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -291,39 +291,39 @@ q = 1247808767</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 = 955FF5A908156D6AB12F5FD6550000000449C0D8AB000000044A600CFF00000046EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D9F44F474BE3B7EC636C33AF6246D4941928F4789F6831FDBC9510C48F3D06C98602000000
|
||||
random_padding_bytes = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE2CF0E4963312415606B89A1D70E1503576388ECC0A5265D7F766C866B29753AAAC6EA78D8B1C6EE01D462EA2CC77294622CDBCED936FC80FB0D53F980FC7ED7</code></pre>
|
||||
<pre><code>data = 955FF5A9081ECE4371B86C45E3000000044C0AF80D0000000467B549AF000000BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A5034098345DF4485C4F013BD2B2715D91985D719A75099C72DFAD4626AA133F706D901E02000000
|
||||
random_padding_bytes = 74898DDC498AC0DB200C925B12A533A4E45EEB1F799632FF14A00A3C67BF2D1B1E5B51198EDCF74817A9F393D00774F028C17FA6A26BC0F6BBE175502EB3C22A3B81361EDCFB9EEE72D0298AEE741BFA8592B09CCD3A8A2231D2717B</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 = 41461D5CDB4DF1BAFB18AEE272639E81FE154591029C86DBF55835F5043C01C497777558E67052D2F23D2C5018D54A12C09BE9C0A98D6F9E33C720F56808B995D40D289DCBA0E25A3F71827069520EE9A84BC11E530A573BFFACFE3FEE4FFC73774DBD804591CC59F5711B3522A0C9FEAD5C92BC64C5FE7A8A66B6023BE768E81DFFADFB6AC6524A478521D0619A802D1167A5FEAC646B14434D7C7A89D2E4E966559482C89FACD19B7228687B542DD0A0CDF59AE4E1402802DE315A6D79F970897EB4A49E69A23F610127DC8F79554E64E9B68A7EAB80235901CDA8F4F6EC783B0209EAA2D96A4644BA05604B8F0A998EF0061208DEED67596D72BCE3E1B472</code></pre>
|
||||
<pre><code>encrypted_data = A9B1176500689D99C4442CA88FF80035AF58FE2A59399E4CA85D81F7045EAA7EC3DA61007668A9F68041B8BEB69BAD881EA80FFD3E9278BF660065D51ACD0F2A77AAC1AD41F268F0046C63D20E0910CC45D9172B3B6169EB6995AE931ED126BDD155E25D1DEFFF29DB2CC8097383614F20D5E7B83B8F575EE521D562F81A9B45C944FD9AB27D548874A46D957FAB7E0267328FD0058BEA4383FB02F9B7612490417D4033403D58A19CCE6D11CABE864239F39B621F7C51F6BF6A90B3FD8EFA5A869B6D5E25C325D235020A3126D3C4B65EEE0BE9FB5A5C300A7EB03F50968FAAAFF122303D73DD35E86FA3AB8E0F2D50BCABB698C00EBD04D8ABA422291C80CF</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 18 02 07 00 29 CB 75 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 46 EB 07 1F 8D C7 CB 46
|
||||
0020 | EC BA B6 10 48 F0 E8 6F 65 45 4C 9B E6 2C B4 D3
|
||||
0030 | D8 F1 42 DB F1 78 B0 D9 04 49 C0 D8 AB 00 00 00
|
||||
0040 | 04 4A 60 0C FF 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 41 46 1D 5C DB 4D F1 BA FB 18 AE E2
|
||||
0060 | 72 63 9E 81 FE 15 45 91 02 9C 86 DB F5 58 35 F5
|
||||
0070 | 04 3C 01 C4 97 77 75 58 E6 70 52 D2 F2 3D 2C 50
|
||||
0080 | 18 D5 4A 12 C0 9B E9 C0 A9 8D 6F 9E 33 C7 20 F5
|
||||
0090 | 68 08 B9 95 D4 0D 28 9D CB A0 E2 5A 3F 71 82 70
|
||||
00A0 | 69 52 0E E9 A8 4B C1 1E 53 0A 57 3B FF AC FE 3F
|
||||
00B0 | EE 4F FC 73 77 4D BD 80 45 91 CC 59 F5 71 1B 35
|
||||
00C0 | 22 A0 C9 FE AD 5C 92 BC 64 C5 FE 7A 8A 66 B6 02
|
||||
00D0 | 3B E7 68 E8 1D FF AD FB 6A C6 52 4A 47 85 21 D0
|
||||
00E0 | 61 9A 80 2D 11 67 A5 FE AC 64 6B 14 43 4D 7C 7A
|
||||
00F0 | 89 D2 E4 E9 66 55 94 82 C8 9F AC D1 9B 72 28 68
|
||||
0100 | 7B 54 2D D0 A0 CD F5 9A E4 E1 40 28 02 DE 31 5A
|
||||
0110 | 6D 79 F9 70 89 7E B4 A4 9E 69 A2 3F 61 01 27 DC
|
||||
0120 | 8F 79 55 4E 64 E9 B6 8A 7E AB 80 23 59 01 CD A8
|
||||
0130 | F4 F6 EC 78 3B 02 09 EA A2 D9 6A 46 44 BA 05 60
|
||||
0140 | 4B 8F 0A 99 8E F0 06 12 08 DE ED 67 59 6D 72 BC
|
||||
0150 | E3 E1 B4 72</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 F0 EB 0C 00 9A ED 77 66
|
||||
0010 | 40 01 00 00 BE E4 12 D7 BD D3 43 62 8E 05 18 35
|
||||
0020 | 1B EB 12 EF BC AF BB 7C 20 FB B9 18 86 EE 0C 2E
|
||||
0030 | BF BD 51 E8 A5 03 40 98 04 4C 0A F8 0D 00 00 00
|
||||
0040 | 04 67 B5 49 AF 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 A9 B1 17 65 00 68 9D 99 C4 44 2C A8
|
||||
0060 | 8F F8 00 35 AF 58 FE 2A 59 39 9E 4C A8 5D 81 F7
|
||||
0070 | 04 5E AA 7E C3 DA 61 00 76 68 A9 F6 80 41 B8 BE
|
||||
0080 | B6 9B AD 88 1E A8 0F FD 3E 92 78 BF 66 00 65 D5
|
||||
0090 | 1A CD 0F 2A 77 AA C1 AD 41 F2 68 F0 04 6C 63 D2
|
||||
00A0 | 0E 09 10 CC 45 D9 17 2B 3B 61 69 EB 69 95 AE 93
|
||||
00B0 | 1E D1 26 BD D1 55 E2 5D 1D EF FF 29 DB 2C C8 09
|
||||
00C0 | 73 83 61 4F 20 D5 E7 B8 3B 8F 57 5E E5 21 D5 62
|
||||
00D0 | F8 1A 9B 45 C9 44 FD 9A B2 7D 54 88 74 A4 6D 95
|
||||
00E0 | 7F AB 7E 02 67 32 8F D0 05 8B EA 43 83 FB 02 F9
|
||||
00F0 | B7 61 24 90 41 7D 40 33 40 3D 58 A1 9C CE 6D 11
|
||||
0100 | CA BE 86 42 39 F3 9B 62 1F 7C 51 F6 BF 6A 90 B3
|
||||
0110 | FD 8E FA 5A 86 9B 6D 5E 25 C3 25 D2 35 02 0A 31
|
||||
0120 | 26 D3 C4 B6 5E EE 0B E9 FB 5A 5C 30 0A 7E B0 3F
|
||||
0130 | 50 96 8F AA AF F1 22 30 3D 73 DD 35 E8 6F A3 AB
|
||||
0140 | 8E 0F 2D 50 BC AB B6 98 C0 0E BD 04 D8 AB A4 22
|
||||
0150 | 29 1C 80 CF</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 = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>1802070029CB7566</code></td>
|
||||
<td><code>F0EB0C009AED7766</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 = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>0449C0D8AB000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1237375147</td>
|
||||
<td><code>044C0AF80D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1275787277</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>044A600CFF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1247808767</td>
|
||||
<td><code>0467B549AF000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1739934127</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 = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE00010041461D5CDB4DF1BAFB18AEE2</code> <code>72639E81FE154591029C86DBF55835F5</code> <code>043C01C497777558E67052D2F23D2C50</code> <code>18D54A12C09BE9C0A98D6F9E33C720F5</code> <code>6808B995D40D289DCBA0E25A3F718270</code> <code>69520EE9A84BC11E530A573BFFACFE3F</code> <code>EE4FFC73774DBD804591CC59F5711B35</code> <code>22A0C9FEAD5C92BC64C5FE7A8A66B602</code> <code>3BE768E81DFFADFB6AC6524A478521D0</code> <code>619A802D1167A5FEAC646B14434D7C7A</code> <code>89D2E4E966559482C89FACD19B722868</code> <code>7B542DD0A0CDF59AE4E1402802DE315A</code> <code>6D79F970897EB4A49E69A23F610127DC</code> <code>8F79554E64E9B68A7EAB80235901CDA8</code> <code>F4F6EC783B0209EAA2D96A4644BA0560</code> <code>4B8F0A998EF0061208DEED67596D72BC</code><br> <code>E3E1B472</code></td>
|
||||
<td><code>FE000100A9B1176500689D99C4442CA8</code> <code>8FF80035AF58FE2A59399E4CA85D81F7</code> <code>045EAA7EC3DA61007668A9F68041B8BE</code> <code>B69BAD881EA80FFD3E9278BF660065D5</code> <code>1ACD0F2A77AAC1AD41F268F0046C63D2</code> <code>0E0910CC45D9172B3B6169EB6995AE93</code> <code>1ED126BDD155E25D1DEFFF29DB2CC809</code> <code>7383614F20D5E7B83B8F575EE521D562</code> <code>F81A9B45C944FD9AB27D548874A46D95</code> <code>7FAB7E0267328FD0058BEA4383FB02F9</code> <code>B7612490417D4033403D58A19CCE6D11</code> <code>CABE864239F39B621F7C51F6BF6A90B3</code> <code>FD8EFA5A869B6D5E25C325D235020A31</code> <code>26D3C4B65EEE0BE9FB5A5C300A7EB03F</code> <code>50968FAAAFF122303D73DD35E86FA3AB</code> <code>8E0F2D50BCABB698C00EBD04D8ABA422</code><br> <code>291C80CF</code></td>
|
||||
<td>Value generated above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -402,47 +402,47 @@ random_padding_bytes = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE
|
|||
<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 E0 67 86 2A CB 75 66
|
||||
0010 | 88 02 00 00 5C 07 E8 D0 46 EB 07 1F 8D C7 CB 46
|
||||
0020 | EC BA B6 10 48 F0 E8 6F 65 45 4C 9B E6 2C B4 D3
|
||||
0030 | D8 F1 42 DB F1 78 B0 D9 FE 50 02 00 95 33 3B 66
|
||||
0040 | 37 DB 67 C2 6F 3F 98 10 E6 71 01 1C 18 B9 4B AB
|
||||
0050 | 67 A3 E4 93 97 F4 66 6A 40 61 98 F1 0C 67 29 13
|
||||
0060 | 46 BA 1A 9C 71 96 9C 44 F5 61 3E F0 23 75 53 F1
|
||||
0070 | 4D 18 A5 29 7A 58 C4 E7 A2 68 C9 5C D5 9B 0F 4C
|
||||
0080 | 57 10 28 63 DA 1F B2 7D B9 38 7E 1F 85 11 0B 4E
|
||||
0090 | A7 2F 43 FA 16 6E 62 0E 6E 78 09 EE 27 C2 14 6F
|
||||
00A0 | 2F A7 BB E5 5F 78 F6 BD E9 6F 86 76 FB B0 47 A3
|
||||
00B0 | 07 3F 8B 58 6E A2 3A BF 99 D1 BD 78 34 9A 42 D9
|
||||
00C0 | EC D8 61 64 96 9D 4D CF 7E B5 59 87 41 D9 29 06
|
||||
00D0 | AA 68 67 4F 6C 86 24 83 6A 3B B7 D1 2A 87 0B 26
|
||||
00E0 | 42 54 68 19 12 58 B9 89 76 9F 4C BB 6D 95 8E 92
|
||||
00F0 | 42 2F 6A CA 72 EE 0F F7 23 34 FE 1D A1 86 6B F3
|
||||
0100 | 33 1A 08 A9 34 77 FB F2 8B AE 43 CD E7 07 08 FD
|
||||
0110 | FA AB 42 24 E0 10 DF D1 62 24 31 8A 55 8E 52 82
|
||||
0120 | 2E 9D 0A 99 C0 20 28 C7 7A E3 9B FF EC DE 61 8A
|
||||
0130 | 78 3D EA D6 17 BA DB 03 A6 47 B3 CD 48 85 57 8E
|
||||
0140 | BE 80 60 82 E4 78 47 61 D2 E4 A0 E5 7A E2 94 DA
|
||||
0150 | 4C B7 4E 0A A1 F0 5F 3C 5F 0E 46 D9 71 79 1D 57
|
||||
0160 | 69 33 84 66 71 F0 FC 22 F9 7E F1 AD 0B 7E 9B 39
|
||||
0170 | FA 4C C9 43 3F D0 87 E1 68 C7 FF 06 1A 83 41 F5
|
||||
0180 | 6E A4 4C 1C 14 7C D2 6D DC 55 5F 6F 0E AF F6 CD
|
||||
0190 | 75 07 4C 3B 61 E5 B4 53 1A 0D 30 95 EA 88 EA CE
|
||||
01A0 | 84 40 03 8D 9C 9F 6A 38 26 C8 97 61 4F 37 2D 7E
|
||||
01B0 | 8E 11 2C 73 31 7B EC B9 6A 0F 9D AD D8 13 2A 51
|
||||
01C0 | 77 DE 7F 6D A7 98 48 82 62 B6 FB 8F 89 9B A9 BF
|
||||
01D0 | A5 95 9B F1 66 D8 6C B2 D7 4F B1 77 D1 17 20 A3
|
||||
01E0 | 75 63 76 29 AC A7 08 3D AA 1E 4D 96 1E F6 19 ED
|
||||
01F0 | 06 23 43 88 9A C5 05 DF BF C4 09 7C 7E 11 CD D3
|
||||
0200 | B9 D9 7B EA 9D 83 0F CF 9B 9C 33 FB 5F 85 0B 63
|
||||
0210 | 25 9E EC AB DA 6C D5 1A A7 C0 68 1F FE 76 29 28
|
||||
0220 | 38 2D 4B 2F 23 D2 DE A7 36 EF AC 1B 77 16 B5 ED
|
||||
0230 | D7 C0 F1 0C 45 73 9E F4 70 1F 04 53 A2 B8 4E 65
|
||||
0240 | 28 D7 98 C4 35 F3 F8 64 BE 91 52 53 9B 9F 98 53
|
||||
0250 | 74 8E 50 5A E8 BF 5F 5B 19 27 42 93 C6 B0 A7 6E
|
||||
0260 | 26 E7 99 09 EF AE CD EB 6B 53 A8 49 0E 57 27 67
|
||||
0270 | EA E7 50 08 66 36 10 7C 9A FC D4 5F C0 92 43 13
|
||||
0280 | 45 B2 E9 8D 40 3D C9 36 BE 01 5D 99</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 F8 03 56 9B ED 77 66
|
||||
0010 | A0 02 00 00 5C 07 E8 D0 BD D3 43 62 8E 05 18 35
|
||||
0020 | 1B EB 12 EF BC AF BB 7C 20 FB B9 18 86 EE 0C 2E
|
||||
0030 | BF BD 51 E8 A5 03 40 98 FE 50 02 00 BC 64 C0 EE
|
||||
0040 | 34 0F B9 33 C2 71 8E 69 BE BC 56 F7 B8 3F 95 56
|
||||
0050 | D7 EE 47 77 84 65 A4 6E 15 50 2A B2 28 FC 81 04
|
||||
0060 | D9 D3 4E 62 9C F6 1E 80 F9 E4 DB 7A 9F 5F 98 F0
|
||||
0070 | ED 7E 90 AE 85 79 6D 51 42 2C 98 65 1C F7 17 13
|
||||
0080 | 65 A7 15 7A 64 9B AD 47 8A A4 85 35 52 14 E9 FC
|
||||
0090 | BF CF 97 D4 E9 E2 EC CF 8C 0F BA AD 9F 58 60 E1
|
||||
00A0 | CE DF 83 08 59 06 C7 98 51 8A 1F D9 0F 98 5A 8C
|
||||
00B0 | A9 56 19 87 CA 31 C7 92 DB AD 7B 79 23 6C 35 06
|
||||
00C0 | E6 4A 57 AD 83 95 D9 31 35 49 A6 A0 F6 B2 9A 60
|
||||
00D0 | D6 62 6A AE 86 4B 21 5F BE 04 A5 F1 EA 06 A6 04
|
||||
00E0 | 02 D3 C5 9F 3A 2E 39 84 2A DC 5B C9 DF 94 41 04
|
||||
00F0 | 0B 88 B6 EF EA 01 7E D8 04 0B 28 43 FF 06 68 0A
|
||||
0100 | E7 E0 A6 B8 A7 E5 93 11 F1 8B C5 09 5D 2B 65 5E
|
||||
0110 | 19 CF 39 60 00 A8 BB 19 D0 EE DA B9 B5 8D 33 31
|
||||
0120 | E7 DF 01 2D 80 14 EC 09 43 38 E8 6E 1D 57 F1 91
|
||||
0130 | 63 A0 86 E5 DC 5D 48 9C C2 BA 30 51 B3 7B AA 2E
|
||||
0140 | A2 F9 47 EC A1 31 E1 A5 79 A7 5F 10 B0 B0 59 62
|
||||
0150 | DF 6C CE 97 4E 00 27 D5 EC F0 29 4E B0 4F 8B F9
|
||||
0160 | 38 30 5A 92 25 DE C0 E0 20 7F DB 16 C1 C4 17 C5
|
||||
0170 | 61 60 F6 F5 40 39 C1 C6 12 A3 51 12 06 90 66 B3
|
||||
0180 | 8C 10 40 94 C3 AC E0 0B A5 1A 12 0D FA 2C DA E9
|
||||
0190 | 7A C3 54 B8 17 2D 0C 5B E0 C2 94 C3 AC 97 31 74
|
||||
01A0 | E4 FE CA 50 BD B2 EF 1D EC C3 7D E6 54 8F 4D 5A
|
||||
01B0 | F3 FA 59 7A 6B E2 68 B6 94 33 C6 91 5D 85 E4 4C
|
||||
01C0 | 92 24 67 61 B4 B9 DE 64 8F CE BF FB B6 8A CA C9
|
||||
01D0 | 96 8E D4 5A 07 E7 98 E4 3A EF B2 58 3E F3 42 C4
|
||||
01E0 | 36 BB B0 D4 B2 49 72 94 E3 67 AF 3E B4 AE 89 84
|
||||
01F0 | 49 3A EE 2C F6 1D 10 00 50 8D CE B1 B2 0D D9 9B
|
||||
0200 | 71 FC 5D CB 05 46 4D 49 63 D9 17 D4 F4 05 59 F3
|
||||
0210 | 86 C5 B8 0A 9E BF D9 8C 1E 10 A0 0E CA 34 4A EA
|
||||
0220 | 47 6B B1 B6 E2 7E 92 20 1B 63 F8 93 C8 EE 10 36
|
||||
0230 | B1 3E 2B 0E 0A C3 F6 C5 EE C8 CC DE A4 C5 41 CB
|
||||
0240 | 57 D8 13 2C B5 2E C6 9B 1A 64 8F 3C 16 CD A7 77
|
||||
0250 | 44 86 08 9A CF 2C C0 97 76 75 09 C1 8C F5 FC 44
|
||||
0260 | FF 74 41 03 38 A6 C1 AB CD B5 1E D6 26 DC AE 32
|
||||
0270 | 34 79 B3 43 34 87 4C 2D 05 DD 98 FE 8E 55 F4 46
|
||||
0280 | 5F 86 5E 2F CF 1C 5B F2 04 93 A2 D6</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 = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01E067862ACB7566</code></td>
|
||||
<td><code>01F803569BED7766</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>88020000</code> (648 in decimal)</td>
|
||||
<td><code>A0020000</code> (672 in decimal)</td>
|
||||
<td>Message body length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -482,19 +482,19 @@ random_padding_bytes = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE50020095333B6637DB67C26F3F9810</code> <code>E671011C18B94BAB67A3E49397F4666A</code> <code>406198F10C67291346BA1A9C71969C44</code> <code>F5613EF0237553F14D18A5297A58C4E7</code> <code>A268C95CD59B0F4C57102863DA1FB27D</code> <code>B9387E1F85110B4EA72F43FA166E620E</code> <code>6E7809EE27C2146F2FA7BBE55F78F6BD</code> <code>E96F8676FBB047A3073F8B586EA23ABF</code> <code>99D1BD78349A42D9ECD86164969D4DCF</code> <code>7EB5598741D92906AA68674F6C862483</code> <code>6A3BB7D12A870B26425468191258B989</code> <code>769F4CBB6D958E92422F6ACA72EE0FF7</code> <code>2334FE1DA1866BF3331A08A93477FBF2</code> <code>8BAE43CDE70708FDFAAB4224E010DFD1</code> <code>6224318A558E52822E9D0A99C02028C7</code> <code>7AE39BFFECDE618A783DEAD617BADB03</code> <code>A647B3CD4885578EBE806082E4784761</code> <code>D2E4A0E57AE294DA4CB74E0AA1F05F3C</code> <code>5F0E46D971791D576933846671F0FC22</code> <code>F97EF1AD0B7E9B39FA4CC9433FD087E1</code> <code>68C7FF061A8341F56EA44C1C147CD26D</code> <code>DC555F6F0EAFF6CD75074C3B61E5B453</code> <code>1A0D3095EA88EACE8440038D9C9F6A38</code> <code>26C897614F372D7E8E112C73317BECB9</code> <code>6A0F9DADD8132A5177DE7F6DA7984882</code> <code>62B6FB8F899BA9BFA5959BF166D86CB2</code> <code>D74FB177D11720A375637629ACA7083D</code> <code>AA1E4D961EF619ED062343889AC505DF</code> <code>BFC4097C7E11CDD3B9D97BEA9D830FCF</code> <code>9B9C33FB5F850B63259EECABDA6CD51A</code> <code>A7C0681FFE762928382D4B2F23D2DEA7</code> <code>36EFAC1B7716B5EDD7C0F10C45739EF4</code> <code>701F0453A2B84E6528D798C435F3F864</code> <code>BE9152539B9F9853748E505AE8BF5F5B</code> <code>19274293C6B0A76E26E79909EFAECDEB</code> <code>6B53A8490E572767EAE750086636107C</code> <code>9AFCD45FC092431345B2E98D403DC936</code><br> <code>BE015D99</code></td>
|
||||
<td><code>FE500200BC64C0EE340FB933C2718E69</code> <code>BEBC56F7B83F9556D7EE47778465A46E</code> <code>15502AB228FC8104D9D34E629CF61E80</code> <code>F9E4DB7A9F5F98F0ED7E90AE85796D51</code> <code>422C98651CF7171365A7157A649BAD47</code> <code>8AA485355214E9FCBFCF97D4E9E2ECCF</code> <code>8C0FBAAD9F5860E1CEDF83085906C798</code> <code>518A1FD90F985A8CA9561987CA31C792</code> <code>DBAD7B79236C3506E64A57AD8395D931</code> <code>3549A6A0F6B29A60D6626AAE864B215F</code> <code>BE04A5F1EA06A60402D3C59F3A2E3984</code> <code>2ADC5BC9DF9441040B88B6EFEA017ED8</code> <code>040B2843FF06680AE7E0A6B8A7E59311</code> <code>F18BC5095D2B655E19CF396000A8BB19</code> <code>D0EEDAB9B58D3331E7DF012D8014EC09</code> <code>4338E86E1D57F19163A086E5DC5D489C</code> <code>C2BA3051B37BAA2EA2F947ECA131E1A5</code> <code>79A75F10B0B05962DF6CCE974E0027D5</code> <code>ECF0294EB04F8BF938305A9225DEC0E0</code> <code>207FDB16C1C417C56160F6F54039C1C6</code> <code>12A35112069066B38C104094C3ACE00B</code> <code>A51A120DFA2CDAE97AC354B8172D0C5B</code> <code>E0C294C3AC973174E4FECA50BDB2EF1D</code> <code>ECC37DE6548F4D5AF3FA597A6BE268B6</code> <code>9433C6915D85E44C92246761B4B9DE64</code> <code>8FCEBFFBB68ACAC9968ED45A07E798E4</code> <code>3AEFB2583EF342C436BBB0D4B2497294</code> <code>E367AF3EB4AE8984493AEE2CF61D1000</code> <code>508DCEB1B20DD99B71FC5DCB05464D49</code> <code>63D917D4F40559F386C5B80A9EBFD98C</code> <code>1E10A00ECA344AEA476BB1B6E27E9220</code> <code>1B63F893C8EE1036B13E2B0E0AC3F6C5</code> <code>EEC8CCDEA4C541CB57D8132CB52EC69B</code> <code>1A648F3C16CDA7774486089ACF2CC097</code> <code>767509C18CF5FC44FF74410338A6C1AB</code> <code>CDB51ED626DCAE323479B34334874C2D</code> <code>05DD98FE8E55F4465F865E2FCF1C5BF2</code><br> <code>0493A2D6</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -502,20 +502,20 @@ random_padding_bytes = 07614048C43C914A5B32162582ECBEB31F8795C4070C13AAA3A69CEAE
|
|||
<!-- 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 = 95333B6637DB67C26F3F9810E671011C18B94BAB67A3E49397F4666A406198F10C67291346BA1A9C71969C44F5613EF0237553F14D18A5297A58C4E7A268C95CD59B0F4C57102863DA1FB27DB9387E1F85110B4EA72F43FA166E620E6E7809EE27C2146F2FA7BBE55F78F6BDE96F8676FBB047A3073F8B586EA23ABF99D1BD78349A42D9ECD86164969D4DCF7EB5598741D92906AA68674F6C8624836A3BB7D12A870B26425468191258B989769F4CBB6D958E92422F6ACA72EE0FF72334FE1DA1866BF3331A08A93477FBF28BAE43CDE70708FDFAAB4224E010DFD16224318A558E52822E9D0A99C02028C77AE39BFFECDE618A783DEAD617BADB03A647B3CD4885578EBE806082E4784761D2E4A0E57AE294DA4CB74E0AA1F05F3C5F0E46D971791D576933846671F0FC22F97EF1AD0B7E9B39FA4CC9433FD087E168C7FF061A8341F56EA44C1C147CD26DDC555F6F0EAFF6CD75074C3B61E5B4531A0D3095EA88EACE8440038D9C9F6A3826C897614F372D7E8E112C73317BECB96A0F9DADD8132A5177DE7F6DA798488262B6FB8F899BA9BFA5959BF166D86CB2D74FB177D11720A375637629ACA7083DAA1E4D961EF619ED062343889AC505DFBFC4097C7E11CDD3B9D97BEA9D830FCF9B9C33FB5F850B63259EECABDA6CD51AA7C0681FFE762928382D4B2F23D2DEA736EFAC1B7716B5EDD7C0F10C45739EF4701F0453A2B84E6528D798C435F3F864BE9152539B9F9853748E505AE8BF5F5B19274293C6B0A76E26E79909EFAECDEB6B53A8490E572767EAE750086636107C9AFCD45FC092431345B2E98D403DC936BE015D99
|
||||
tmp_aes_key = 37C14AF907BD46B39A8FF94D067CBAF3EE6FCC3B43F6D89E7C44148668CA52FE
|
||||
tmp_aes_iv = E919CBC84320D9FB6680478C7AF2FE5E8B2DC15C97281EC31EF108B1F44F474B</code></pre>
|
||||
<pre><code>encrypted_answer = BC64C0EE340FB933C2718E69BEBC56F7B83F9556D7EE47778465A46E15502AB228FC8104D9D34E629CF61E80F9E4DB7A9F5F98F0ED7E90AE85796D51422C98651CF7171365A7157A649BAD478AA485355214E9FCBFCF97D4E9E2ECCF8C0FBAAD9F5860E1CEDF83085906C798518A1FD90F985A8CA9561987CA31C792DBAD7B79236C3506E64A57AD8395D9313549A6A0F6B29A60D6626AAE864B215FBE04A5F1EA06A60402D3C59F3A2E39842ADC5BC9DF9441040B88B6EFEA017ED8040B2843FF06680AE7E0A6B8A7E59311F18BC5095D2B655E19CF396000A8BB19D0EEDAB9B58D3331E7DF012D8014EC094338E86E1D57F19163A086E5DC5D489CC2BA3051B37BAA2EA2F947ECA131E1A579A75F10B0B05962DF6CCE974E0027D5ECF0294EB04F8BF938305A9225DEC0E0207FDB16C1C417C56160F6F54039C1C612A35112069066B38C104094C3ACE00BA51A120DFA2CDAE97AC354B8172D0C5BE0C294C3AC973174E4FECA50BDB2EF1DECC37DE6548F4D5AF3FA597A6BE268B69433C6915D85E44C92246761B4B9DE648FCEBFFBB68ACAC9968ED45A07E798E43AEFB2583EF342C436BBB0D4B2497294E367AF3EB4AE8984493AEE2CF61D1000508DCEB1B20DD99B71FC5DCB05464D4963D917D4F40559F386C5B80A9EBFD98C1E10A00ECA344AEA476BB1B6E27E92201B63F893C8EE1036B13E2B0E0AC3F6C5EEC8CCDEA4C541CB57D8132CB52EC69B1A648F3C16CDA7774486089ACF2CC097767509C18CF5FC44FF74410338A6C1ABCDB51ED626DCAE323479B34334874C2D05DD98FE8E55F4465F865E2FCF1C5BF20493A2D6
|
||||
tmp_aes_key = 63BF1BC5DB02E0ADE18277C00F02786F3059DE28473FBEE7333DAB1495A9BE8C
|
||||
tmp_aes_iv = D37420FF595A1B55C7F1700B81597A184B050F3DAB81CA004405375F345DF448</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 988F2D6BD584CA36CB0A786E73DB6FE4CC8734B2BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000A3A3525CD4B273DD126F2C17194620DFBEA8027476988BD6D6D782AE218A8DE7BD89ECC6AEF9EB289203A65D0A4373FFDB19E013AC768AB0A07153AAFCCE7EDF663D3A9D3D4172581AA3DA791769F85100731E2B84092E24BF6E3B92BA9862A73E44895569E2C9084B339E2B63DD3319CCD620775730C3E02E04C740E20B5605A6B9F41F136D69F2A4C542CDE192681CC3244083059908E1CAFD112239BE233C84CAC384998C31A627EC086807001317B92748B454E5AB34033F0294B10DA539299E896D188449AF2A4C62779F9FDA493342B6C563ED25B95CC3A996E766E431D922625A1E14A674752637AF4A4462DA27F3554573BF12443ACB401BB2D8FC82ACB7566ED76BF1E3A83230A
|
||||
answer = BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000A3A3525CD4B273DD126F2C17194620DFBEA8027476988BD6D6D782AE218A8DE7BD89ECC6AEF9EB289203A65D0A4373FFDB19E013AC768AB0A07153AAFCCE7EDF663D3A9D3D4172581AA3DA791769F85100731E2B84092E24BF6E3B92BA9862A73E44895569E2C9084B339E2B63DD3319CCD620775730C3E02E04C740E20B5605A6B9F41F136D69F2A4C542CDE192681CC3244083059908E1CAFD112239BE233C84CAC384998C31A627EC086807001317B92748B454E5AB34033F0294B10DA539299E896D188449AF2A4C62779F9FDA493342B6C563ED25B95CC3A996E766E431D922625A1E14A674752637AF4A4462DA27F3554573BF12443ACB401BB2D8FC82ACB7566ED76BF1E3A83230A</code></pre>
|
||||
<pre><code>answer_with_hash = 1A81AC6A56C6470C624C8844979252D0C9B9E27EBA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100915F316AF2EBC858375013FB985FD5C05B1A4FA4C2EC94F8F7C2A4BF738A9759F809DE8BB085A1F96372F20B9F1DAFC0009264EC99EDD8F8482F9DFF5744EDF7956B678E6828EA91D0583D99E7B11CE97BA03B75D77CA1F5B4F360807D38C2F04902F2AC7035C5AD1A1A43D4FC3E788FCC97AE32D1E94E75D289ACDC029E3DACAFFF1164318AAE73AC2253EC7C4876C6C1E45E9664F15A44404FE352BFB50965695472CDA99DDA361135FE5C197F5783F3E26EEC18944D58513C355EF6800E8738CD7B987DD9C934441A180206EEC010FF0D1A756769850D5FAFB05DFBA967B2D0BA5D69D6888089195A07249E175A6BE0194511EA6D2FF019A81426EDAE4A229BED776696FCFCE0315A79DD
|
||||
answer = BA0D89B5BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A503409803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100915F316AF2EBC858375013FB985FD5C05B1A4FA4C2EC94F8F7C2A4BF738A9759F809DE8BB085A1F96372F20B9F1DAFC0009264EC99EDD8F8482F9DFF5744EDF7956B678E6828EA91D0583D99E7B11CE97BA03B75D77CA1F5B4F360807D38C2F04902F2AC7035C5AD1A1A43D4FC3E788FCC97AE32D1E94E75D289ACDC029E3DACAFFF1164318AAE73AC2253EC7C4876C6C1E45E9664F15A44404FE352BFB50965695472CDA99DDA361135FE5C197F5783F3E26EEC18944D58513C355EF6800E8738CD7B987DD9C934441A180206EEC010FF0D1A756769850D5FAFB05DFBA967B2D0BA5D69D6888089195A07249E175A6BE0194511EA6D2FF019A81426EDAE4A229BED776696FCFCE0315A79DD</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 46 EB 07 1F 8D C7 CB 46 EC BA B6 10
|
||||
0010 | 48 F0 E8 6F 65 45 4C 9B E6 2C B4 D3 D8 F1 42 DB
|
||||
0020 | F1 78 B0 D9 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 BD D3 43 62 8E 05 18 35 1B EB 12 EF
|
||||
0010 | BC AF BB 7C 20 FB B9 18 86 EE 0C 2E BF BD 51 E8
|
||||
0020 | A5 03 40 98 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 = BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D
|
|||
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 | 0A 3A 35 25 CD 4B 27 3D D1 26 F2 C1 71 94 62 0D
|
||||
0140 | FB EA 80 27 47 69 88 BD 6D 6D 78 2A E2 18 A8 DE
|
||||
0150 | 7B D8 9E CC 6A EF 9E B2 89 20 3A 65 D0 A4 37 3F
|
||||
0160 | FD B1 9E 01 3A C7 68 AB 0A 07 15 3A AF CC E7 ED
|
||||
0170 | F6 63 D3 A9 D3 D4 17 25 81 AA 3D A7 91 76 9F 85
|
||||
0180 | 10 07 31 E2 B8 40 92 E2 4B F6 E3 B9 2B A9 86 2A
|
||||
0190 | 73 E4 48 95 56 9E 2C 90 84 B3 39 E2 B6 3D D3 31
|
||||
01A0 | 9C CD 62 07 75 73 0C 3E 02 E0 4C 74 0E 20 B5 60
|
||||
01B0 | 5A 6B 9F 41 F1 36 D6 9F 2A 4C 54 2C DE 19 26 81
|
||||
01C0 | CC 32 44 08 30 59 90 8E 1C AF D1 12 23 9B E2 33
|
||||
01D0 | C8 4C AC 38 49 98 C3 1A 62 7E C0 86 80 70 01 31
|
||||
01E0 | 7B 92 74 8B 45 4E 5A B3 40 33 F0 29 4B 10 DA 53
|
||||
01F0 | 92 99 E8 96 D1 88 44 9A F2 A4 C6 27 79 F9 FD A4
|
||||
0200 | 93 34 2B 6C 56 3E D2 5B 95 CC 3A 99 6E 76 6E 43
|
||||
0210 | 1D 92 26 25 A1 E1 4A 67 47 52 63 7A F4 A4 46 2D
|
||||
0220 | A2 7F 35 54 57 3B F1 24 43 AC B4 01 BB 2D 8F C8
|
||||
0230 | 2A CB 75 66</code></pre>
|
||||
0130 | 91 5F 31 6A F2 EB C8 58 37 50 13 FB 98 5F D5 C0
|
||||
0140 | 5B 1A 4F A4 C2 EC 94 F8 F7 C2 A4 BF 73 8A 97 59
|
||||
0150 | F8 09 DE 8B B0 85 A1 F9 63 72 F2 0B 9F 1D AF C0
|
||||
0160 | 00 92 64 EC 99 ED D8 F8 48 2F 9D FF 57 44 ED F7
|
||||
0170 | 95 6B 67 8E 68 28 EA 91 D0 58 3D 99 E7 B1 1C E9
|
||||
0180 | 7B A0 3B 75 D7 7C A1 F5 B4 F3 60 80 7D 38 C2 F0
|
||||
0190 | 49 02 F2 AC 70 35 C5 AD 1A 1A 43 D4 FC 3E 78 8F
|
||||
01A0 | CC 97 AE 32 D1 E9 4E 75 D2 89 AC DC 02 9E 3D AC
|
||||
01B0 | AF FF 11 64 31 8A AE 73 AC 22 53 EC 7C 48 76 C6
|
||||
01C0 | C1 E4 5E 96 64 F1 5A 44 40 4F E3 52 BF B5 09 65
|
||||
01D0 | 69 54 72 CD A9 9D DA 36 11 35 FE 5C 19 7F 57 83
|
||||
01E0 | F3 E2 6E EC 18 94 4D 58 51 3C 35 5E F6 80 0E 87
|
||||
01F0 | 38 CD 7B 98 7D D9 C9 34 44 1A 18 02 06 EE C0 10
|
||||
0200 | FF 0D 1A 75 67 69 85 0D 5F AF B0 5D FB A9 67 B2
|
||||
0210 | D0 BA 5D 69 D6 88 80 89 19 5A 07 24 9E 17 5A 6B
|
||||
0220 | E0 19 45 11 EA 6D 2F F0 19 A8 14 26 ED AE 4A 22
|
||||
0230 | 9B ED 77 66</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -570,13 +570,13 @@ answer = BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -594,13 +594,13 @@ answer = BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE0001000A3A3525CD4B273DD126F2C1</code> <code>7194620DFBEA8027476988BD6D6D782A</code> <code>E218A8DE7BD89ECC6AEF9EB289203A65</code> <code>D0A4373FFDB19E013AC768AB0A07153A</code> <code>AFCCE7EDF663D3A9D3D4172581AA3DA7</code> <code>91769F85100731E2B84092E24BF6E3B9</code> <code>2BA9862A73E44895569E2C9084B339E2</code> <code>B63DD3319CCD620775730C3E02E04C74</code> <code>0E20B5605A6B9F41F136D69F2A4C542C</code> <code>DE192681CC3244083059908E1CAFD112</code> <code>239BE233C84CAC384998C31A627EC086</code> <code>807001317B92748B454E5AB34033F029</code> <code>4B10DA539299E896D188449AF2A4C627</code> <code>79F9FDA493342B6C563ED25B95CC3A99</code> <code>6E766E431D922625A1E14A674752637A</code> <code>F4A4462DA27F3554573BF12443ACB401</code><br> <code>BB2D8FC8</code></td>
|
||||
<td><code>FE000100915F316AF2EBC858375013FB</code> <code>985FD5C05B1A4FA4C2EC94F8F7C2A4BF</code> <code>738A9759F809DE8BB085A1F96372F20B</code> <code>9F1DAFC0009264EC99EDD8F8482F9DFF</code> <code>5744EDF7956B678E6828EA91D0583D99</code> <code>E7B11CE97BA03B75D77CA1F5B4F36080</code> <code>7D38C2F04902F2AC7035C5AD1A1A43D4</code> <code>FC3E788FCC97AE32D1E94E75D289ACDC</code> <code>029E3DACAFFF1164318AAE73AC2253EC</code> <code>7C4876C6C1E45E9664F15A44404FE352</code> <code>BFB50965695472CDA99DDA361135FE5C</code> <code>197F5783F3E26EEC18944D58513C355E</code> <code>F6800E8738CD7B987DD9C934441A1802</code> <code>06EEC010FF0D1A756769850D5FAFB05D</code> <code>FBA967B2D0BA5D69D6888089195A0724</code> <code>9E175A6BE0194511EA6D2FF019A81426</code><br> <code>EDAE4A22</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>2ACB7566</code> (1718995754 in decimal)</td>
|
||||
<td><code>9BED7766</code> (1719135643 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -609,34 +609,34 @@ answer = BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D
|
|||
<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 = 5134482124796576F73071FACC3B6893B084FBA0445D4FC320613BE19428284BB99247000A30E7F6132181E0B68C9AE0AC66189120E758CF664B1AB76427291A8B23EBEB232627E63ADE944585EE305047D46017300D848BC17FDAE6C83F6494B9DB1E07750E3D9EB39ADFB1AD3C8FDCA6AE5B835551924F6A205FE63C48EF8C007BE2948F4C3A9CB26AFCF56BB165999F8908084CACDF61DEF66DE8525F07A32C0E14A88CC23E36E2F99A082F3710EE2B67E1C43A75C11DA2D9F451D36DB00938AF2E11672CCA3DBFCAC349482B3F1D7EC121726994D618B55BBF496D4D94FB08370AE9E3619962B66A3D75460CF1D72BCA56FBAC713169A48E7570DCBFCCCC</code></pre>
|
||||
<pre><code>b = 85F40B8BFC6E8574B767C1688EB24E0331A92CD2ECBE358F24CF362D93EE2DEEF61B7ADD62B9A442700CBDA83860048232597F3215540A27619DE5C975A31383BFD50332F9F7FBA8A7DF2FFDAC1A51B24A6E37A67D4363C427E1986F4769329E1C114D0D6285C05C1887BA606F296F49B145E5B0141AD6698CD8237E41494DF3F64E5C3BE577011F0CE1D82594929B3E58F35BF2ECEE5480D37871A9547DB5A5C586F3E980EA3B33BAC49A0BAFA71412004B3D6D55734673C72688DBD4C06BFA3DF9E72FBEF2261D64FCF684ABD7F2AE1627E3D86D2D4E9608644AE02447F4DBCF60C2218D2E7E255E8D3523FBB45A933E4709043E8247661F145496F9AA380A</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 = 1399E6A25C7C8C3F90C2BF8E9BF174CBD6DAFA79963E9274B9D56E9B72D226225ED1D74C985E52E04844362ACFC90CF6899363CFA6C57A525C05585D5BE0AAC39999EE5ED24B3A425F406353FC78AB5613EC7C63590917737A842C66BED98B2FBFC95E0CF6A74467495255B3F95DD0ED50EE4E7F98AA75A6E92924BB71369E77EB9AB0E52D2FDCB8E351E340F5781914D549B828F7D07C003A0BD487F24D43008E83A9DE572945B4E8E8A9D3A83686DB0305FE8A513870111CEE63C05B159B6D0F591B7305E9F68DCE95047B111E76B8C82AD173FE5BE1C30F9CE0624354670D671EDDE524A3E6D31AB8AF8568ED7D8BCE4C07E13F6F7544977F6A5B256B3D16</code></pre>
|
||||
<pre><code>g_b = 4C7F87CD92831F9C137C0E4E514710E8CACBB841CFC642D2C39623D1A675DFD8E99242C4F1E172C727F64DA6B0A265DCD3C35609A6A99CF284AAC1B14632D31AD8415C6BB963559981121E7DCC157FDB59B72AC980175AB7C605A22C759CFD2D36644BAF643984A31F86E2A00804062FBA7E9072CAC2837716E9251000C40D96EB3ECF5538565094CA1D2A499F425B6046177467028062D618B754F2534D89A2974D3BDF896139935F30C305DF67CB2BDD1D701823EDC17F1908E69FF324C33F7F830B38A08A8C11D99A0D8B01D2ED3501CEFD2B3710DC8CF4799C79F2AF844E921DCC5D583C55E6BAA618AFD49BE51D569C25CD970E1030252F808FF618CFAE</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 46 EB 07 1F 8D C7 CB 46 EC BA B6 10
|
||||
0010 | 48 F0 E8 6F 65 45 4C 9B E6 2C B4 D3 D8 F1 42 DB
|
||||
0020 | F1 78 B0 D9 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 13 99 E6 A2 5C 7C 8C 3F 90 C2 BF 8E 9B F1 74 CB
|
||||
0040 | D6 DA FA 79 96 3E 92 74 B9 D5 6E 9B 72 D2 26 22
|
||||
0050 | 5E D1 D7 4C 98 5E 52 E0 48 44 36 2A CF C9 0C F6
|
||||
0060 | 89 93 63 CF A6 C5 7A 52 5C 05 58 5D 5B E0 AA C3
|
||||
0070 | 99 99 EE 5E D2 4B 3A 42 5F 40 63 53 FC 78 AB 56
|
||||
0080 | 13 EC 7C 63 59 09 17 73 7A 84 2C 66 BE D9 8B 2F
|
||||
0090 | BF C9 5E 0C F6 A7 44 67 49 52 55 B3 F9 5D D0 ED
|
||||
00A0 | 50 EE 4E 7F 98 AA 75 A6 E9 29 24 BB 71 36 9E 77
|
||||
00B0 | EB 9A B0 E5 2D 2F DC B8 E3 51 E3 40 F5 78 19 14
|
||||
00C0 | D5 49 B8 28 F7 D0 7C 00 3A 0B D4 87 F2 4D 43 00
|
||||
00D0 | 8E 83 A9 DE 57 29 45 B4 E8 E8 A9 D3 A8 36 86 DB
|
||||
00E0 | 03 05 FE 8A 51 38 70 11 1C EE 63 C0 5B 15 9B 6D
|
||||
00F0 | 0F 59 1B 73 05 E9 F6 8D CE 95 04 7B 11 1E 76 B8
|
||||
0100 | C8 2A D1 73 FE 5B E1 C3 0F 9C E0 62 43 54 67 0D
|
||||
0110 | 67 1E DD E5 24 A3 E6 D3 1A B8 AF 85 68 ED 7D 8B
|
||||
0120 | CE 4C 07 E1 3F 6F 75 44 97 7F 6A 5B 25 6B 3D 16</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 BD D3 43 62 8E 05 18 35 1B EB 12 EF
|
||||
0010 | BC AF BB 7C 20 FB B9 18 86 EE 0C 2E BF BD 51 E8
|
||||
0020 | A5 03 40 98 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 4C 7F 87 CD 92 83 1F 9C 13 7C 0E 4E 51 47 10 E8
|
||||
0040 | CA CB B8 41 CF C6 42 D2 C3 96 23 D1 A6 75 DF D8
|
||||
0050 | E9 92 42 C4 F1 E1 72 C7 27 F6 4D A6 B0 A2 65 DC
|
||||
0060 | D3 C3 56 09 A6 A9 9C F2 84 AA C1 B1 46 32 D3 1A
|
||||
0070 | D8 41 5C 6B B9 63 55 99 81 12 1E 7D CC 15 7F DB
|
||||
0080 | 59 B7 2A C9 80 17 5A B7 C6 05 A2 2C 75 9C FD 2D
|
||||
0090 | 36 64 4B AF 64 39 84 A3 1F 86 E2 A0 08 04 06 2F
|
||||
00A0 | BA 7E 90 72 CA C2 83 77 16 E9 25 10 00 C4 0D 96
|
||||
00B0 | EB 3E CF 55 38 56 50 94 CA 1D 2A 49 9F 42 5B 60
|
||||
00C0 | 46 17 74 67 02 80 62 D6 18 B7 54 F2 53 4D 89 A2
|
||||
00D0 | 97 4D 3B DF 89 61 39 93 5F 30 C3 05 DF 67 CB 2B
|
||||
00E0 | DD 1D 70 18 23 ED C1 7F 19 08 E6 9F F3 24 C3 3F
|
||||
00F0 | 7F 83 0B 38 A0 8A 8C 11 D9 9A 0D 8B 01 D2 ED 35
|
||||
0100 | 01 CE FD 2B 37 10 DC 8C F4 79 9C 79 F2 AF 84 4E
|
||||
0110 | 92 1D CC 5D 58 3C 55 E6 BA A6 18 AF D4 9B E5 1D
|
||||
0120 | 56 9C 25 CD 97 0E 10 30 25 2F 80 8F F6 18 CF AE</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 = BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001001399E6A25C7C8C3F90C2BF8E</code> <code>9BF174CBD6DAFA79963E9274B9D56E9B</code> <code>72D226225ED1D74C985E52E04844362A</code> <code>CFC90CF6899363CFA6C57A525C05585D</code> <code>5BE0AAC39999EE5ED24B3A425F406353</code> <code>FC78AB5613EC7C63590917737A842C66</code> <code>BED98B2FBFC95E0CF6A74467495255B3</code> <code>F95DD0ED50EE4E7F98AA75A6E92924BB</code> <code>71369E77EB9AB0E52D2FDCB8E351E340</code> <code>F5781914D549B828F7D07C003A0BD487</code> <code>F24D43008E83A9DE572945B4E8E8A9D3</code> <code>A83686DB0305FE8A513870111CEE63C0</code> <code>5B159B6D0F591B7305E9F68DCE95047B</code> <code>111E76B8C82AD173FE5BE1C30F9CE062</code> <code>4354670D671EDDE524A3E6D31AB8AF85</code> <code>68ED7D8BCE4C07E13F6F7544977F6A5B</code><br> <code>256B3D16</code></td>
|
||||
<td><code>FE0001004C7F87CD92831F9C137C0E4E</code> <code>514710E8CACBB841CFC642D2C39623D1</code> <code>A675DFD8E99242C4F1E172C727F64DA6</code> <code>B0A265DCD3C35609A6A99CF284AAC1B1</code> <code>4632D31AD8415C6BB963559981121E7D</code> <code>CC157FDB59B72AC980175AB7C605A22C</code> <code>759CFD2D36644BAF643984A31F86E2A0</code> <code>0804062FBA7E9072CAC2837716E92510</code> <code>00C40D96EB3ECF5538565094CA1D2A49</code> <code>9F425B6046177467028062D618B754F2</code> <code>534D89A2974D3BDF896139935F30C305</code> <code>DF67CB2BDD1D701823EDC17F1908E69F</code> <code>F324C33F7F830B38A08A8C11D99A0D8B</code> <code>01D2ED3501CEFD2B3710DC8CF4799C79</code> <code>F2AF844E921DCC5D583C55E6BAA618AF</code> <code>D49BE51D569C25CD970E1030252F808F</code><br> <code>F618CFAE</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 = BA0D89B546EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D
|
|||
<!-- 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 = 54B6436646EB071F8DC7CB46ECBAB61048F0E86F65454C9BE62CB4D3D8F142DBF178B0D90000000000000000FE0001001399E6A25C7C8C3F90C2BF8E9BF174CBD6DAFA79963E9274B9D56E9B72D226225ED1D74C985E52E04844362ACFC90CF6899363CFA6C57A525C05585D5BE0AAC39999EE5ED24B3A425F406353FC78AB5613EC7C63590917737A842C66BED98B2FBFC95E0CF6A74467495255B3F95DD0ED50EE4E7F98AA75A6E92924BB71369E77EB9AB0E52D2FDCB8E351E340F5781914D549B828F7D07C003A0BD487F24D43008E83A9DE572945B4E8E8A9D3A83686DB0305FE8A513870111CEE63C05B159B6D0F591B7305E9F68DCE95047B111E76B8C82AD173FE5BE1C30F9CE0624354670D671EDDE524A3E6D31AB8AF8568ED7D8BCE4C07E13F6F7544977F6A5B256B3D16
|
||||
padding = 3F5A178B1BAEF997E1221898
|
||||
tmp_aes_key = 37C14AF907BD46B39A8FF94D067CBAF3EE6FCC3B43F6D89E7C44148668CA52FE
|
||||
tmp_aes_iv = E919CBC84320D9FB6680478C7AF2FE5E8B2DC15C97281EC31EF108B1F44F474B</code></pre>
|
||||
<pre><code>data = 54B64366BDD343628E0518351BEB12EFBCAFBB7C20FBB91886EE0C2EBFBD51E8A50340980000000000000000FE0001004C7F87CD92831F9C137C0E4E514710E8CACBB841CFC642D2C39623D1A675DFD8E99242C4F1E172C727F64DA6B0A265DCD3C35609A6A99CF284AAC1B14632D31AD8415C6BB963559981121E7DCC157FDB59B72AC980175AB7C605A22C759CFD2D36644BAF643984A31F86E2A00804062FBA7E9072CAC2837716E9251000C40D96EB3ECF5538565094CA1D2A499F425B6046177467028062D618B754F2534D89A2974D3BDF896139935F30C305DF67CB2BDD1D701823EDC17F1908E69FF324C33F7F830B38A08A8C11D99A0D8B01D2ED3501CEFD2B3710DC8CF4799C79F2AF844E921DCC5D583C55E6BAA618AFD49BE51D569C25CD970E1030252F808FF618CFAE
|
||||
padding = 2C0117281AD0958C0F04A25F
|
||||
tmp_aes_key = 63BF1BC5DB02E0ADE18277C00F02786F3059DE28473FBEE7333DAB1495A9BE8C
|
||||
tmp_aes_iv = D37420FF595A1B55C7F1700B81597A184B050F3DAB81CA004405375F345DF448</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 = C37243D40D8F45CA1B1FFF735DDAF3E193E8EEB941D70F8EB604D48D6E13CD14667ED6FC8EB07CE9EFE0E77E952E89F509FE623C738C37C2DE983130876B267D075FE5B1A321366D3BE1CA391D6EABF6A84C528F9E16988650295C49663382110FE0D3F4B0252A3E87CD54C7B28B56B19ED4F92900B6B52EAD68EC152970BAD18172D696D2D4B1B92EB93534A29334BEC19F4DD1A5A967DB4BD2B246803A50016B630FE34BC24F5D81C09804335737448B93240A78C753AEADFE8E39F18AC8013D123E8C1EB6C2634A4590E92BB92FB079E57F57B888CED472B84FDFCFB4A577EE06E2ECC46B8C2B59E52FFE5DBE3A03B130B7ABC6CCCC64FDEF301ACD3581A4E3072FE1EDCF36DE032C5E39ACD1846F1B4D104C28A9FFD00194ED21EF7D9D1229463BF0874C122A494E0199AACA7490CF673898CFC565DAFD9A28B86F3353D46BC1922BFF930A2C18A0DD3A07265CE5</code></pre>
|
||||
<pre><code>encrypted_data = 4D4F434D3F9C6BA064D27B62E563AC86D46F79C7334187270929F137A2F38F241113DA6F2E07B240A10079E4063081F26846395786AC9F47C73634123512C45D9A3D4733CDD63FCB91159F19D458B79193488B84D02B7F8521D7C6AA9F632558E436B0C865B201935AED75F6E4F33FE1633D1C79C9821BB62C838A1DF84DDE32AA6C5C19C872BB6A4835C6EAB93FD1C3680465210DB0E0ADEC3B155D742EBECEA4FB1E63CE68CAB77330543A7FC8ED2D2AD2A0D625BAF67E17312BE2C2D5C2C54C4A9C1C9F63BA207C7B8E301E71B8ADC1E0C8A8B9D1C6FC1618ED64D07A37A7DCF9ED2DB758098F88419644B5422EFD62710E46D0859A224CF4B5652E3FE7E3C4C3BBC675AB96772904B857D2D8E76ADF5032A6D6AFFAE0D4EA3F9183B2BC2461678716F118E0F735E28A558FF6BE33668C9666EA6B68049C635C344783A568C59D061480A4A8EB4936FCCF6117F272</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 3C B4 09 00 2A CB 75 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 46 EB 07 1F 8D C7 CB 46
|
||||
0020 | EC BA B6 10 48 F0 E8 6F 65 45 4C 9B E6 2C B4 D3
|
||||
0030 | D8 F1 42 DB F1 78 B0 D9 FE 50 01 00 C3 72 43 D4
|
||||
0040 | 0D 8F 45 CA 1B 1F FF 73 5D DA F3 E1 93 E8 EE B9
|
||||
0050 | 41 D7 0F 8E B6 04 D4 8D 6E 13 CD 14 66 7E D6 FC
|
||||
0060 | 8E B0 7C E9 EF E0 E7 7E 95 2E 89 F5 09 FE 62 3C
|
||||
0070 | 73 8C 37 C2 DE 98 31 30 87 6B 26 7D 07 5F E5 B1
|
||||
0080 | A3 21 36 6D 3B E1 CA 39 1D 6E AB F6 A8 4C 52 8F
|
||||
0090 | 9E 16 98 86 50 29 5C 49 66 33 82 11 0F E0 D3 F4
|
||||
00A0 | B0 25 2A 3E 87 CD 54 C7 B2 8B 56 B1 9E D4 F9 29
|
||||
00B0 | 00 B6 B5 2E AD 68 EC 15 29 70 BA D1 81 72 D6 96
|
||||
00C0 | D2 D4 B1 B9 2E B9 35 34 A2 93 34 BE C1 9F 4D D1
|
||||
00D0 | A5 A9 67 DB 4B D2 B2 46 80 3A 50 01 6B 63 0F E3
|
||||
00E0 | 4B C2 4F 5D 81 C0 98 04 33 57 37 44 8B 93 24 0A
|
||||
00F0 | 78 C7 53 AE AD FE 8E 39 F1 8A C8 01 3D 12 3E 8C
|
||||
0100 | 1E B6 C2 63 4A 45 90 E9 2B B9 2F B0 79 E5 7F 57
|
||||
0110 | B8 88 CE D4 72 B8 4F DF CF B4 A5 77 EE 06 E2 EC
|
||||
0120 | C4 6B 8C 2B 59 E5 2F FE 5D BE 3A 03 B1 30 B7 AB
|
||||
0130 | C6 CC CC 64 FD EF 30 1A CD 35 81 A4 E3 07 2F E1
|
||||
0140 | ED CF 36 DE 03 2C 5E 39 AC D1 84 6F 1B 4D 10 4C
|
||||
0150 | 28 A9 FF D0 01 94 ED 21 EF 7D 9D 12 29 46 3B F0
|
||||
0160 | 87 4C 12 2A 49 4E 01 99 AA CA 74 90 CF 67 38 98
|
||||
0170 | CF C5 65 DA FD 9A 28 B8 6F 33 53 D4 6B C1 92 2B
|
||||
0180 | FF 93 0A 2C 18 A0 DD 3A 07 26 5C E5</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 CC 5B 05 00 9B ED 77 66
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 BD D3 43 62 8E 05 18 35
|
||||
0020 | 1B EB 12 EF BC AF BB 7C 20 FB B9 18 86 EE 0C 2E
|
||||
0030 | BF BD 51 E8 A5 03 40 98 FE 50 01 00 4D 4F 43 4D
|
||||
0040 | 3F 9C 6B A0 64 D2 7B 62 E5 63 AC 86 D4 6F 79 C7
|
||||
0050 | 33 41 87 27 09 29 F1 37 A2 F3 8F 24 11 13 DA 6F
|
||||
0060 | 2E 07 B2 40 A1 00 79 E4 06 30 81 F2 68 46 39 57
|
||||
0070 | 86 AC 9F 47 C7 36 34 12 35 12 C4 5D 9A 3D 47 33
|
||||
0080 | CD D6 3F CB 91 15 9F 19 D4 58 B7 91 93 48 8B 84
|
||||
0090 | D0 2B 7F 85 21 D7 C6 AA 9F 63 25 58 E4 36 B0 C8
|
||||
00A0 | 65 B2 01 93 5A ED 75 F6 E4 F3 3F E1 63 3D 1C 79
|
||||
00B0 | C9 82 1B B6 2C 83 8A 1D F8 4D DE 32 AA 6C 5C 19
|
||||
00C0 | C8 72 BB 6A 48 35 C6 EA B9 3F D1 C3 68 04 65 21
|
||||
00D0 | 0D B0 E0 AD EC 3B 15 5D 74 2E BE CE A4 FB 1E 63
|
||||
00E0 | CE 68 CA B7 73 30 54 3A 7F C8 ED 2D 2A D2 A0 D6
|
||||
00F0 | 25 BA F6 7E 17 31 2B E2 C2 D5 C2 C5 4C 4A 9C 1C
|
||||
0100 | 9F 63 BA 20 7C 7B 8E 30 1E 71 B8 AD C1 E0 C8 A8
|
||||
0110 | B9 D1 C6 FC 16 18 ED 64 D0 7A 37 A7 DC F9 ED 2D
|
||||
0120 | B7 58 09 8F 88 41 96 44 B5 42 2E FD 62 71 0E 46
|
||||
0130 | D0 85 9A 22 4C F4 B5 65 2E 3F E7 E3 C4 C3 BB C6
|
||||
0140 | 75 AB 96 77 29 04 B8 57 D2 D8 E7 6A DF 50 32 A6
|
||||
0150 | D6 AF FA E0 D4 EA 3F 91 83 B2 BC 24 61 67 87 16
|
||||
0160 | F1 18 E0 F7 35 E2 8A 55 8F F6 BE 33 66 8C 96 66
|
||||
0170 | EA 6B 68 04 9C 63 5C 34 47 83 A5 68 C5 9D 06 14
|
||||
0180 | 80 A4 A8 EB 49 36 FC CF 61 17 F2 72</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>3CB409002ACB7566</code></td>
|
||||
<td><code>CC5B05009BED7766</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>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE500100C37243D40D8F45CA1B1FFF73</code> <code>5DDAF3E193E8EEB941D70F8EB604D48D</code> <code>6E13CD14667ED6FC8EB07CE9EFE0E77E</code> <code>952E89F509FE623C738C37C2DE983130</code> <code>876B267D075FE5B1A321366D3BE1CA39</code> <code>1D6EABF6A84C528F9E16988650295C49</code> <code>663382110FE0D3F4B0252A3E87CD54C7</code> <code>B28B56B19ED4F92900B6B52EAD68EC15</code> <code>2970BAD18172D696D2D4B1B92EB93534</code> <code>A29334BEC19F4DD1A5A967DB4BD2B246</code> <code>803A50016B630FE34BC24F5D81C09804</code> <code>335737448B93240A78C753AEADFE8E39</code> <code>F18AC8013D123E8C1EB6C2634A4590E9</code> <code>2BB92FB079E57F57B888CED472B84FDF</code> <code>CFB4A577EE06E2ECC46B8C2B59E52FFE</code> <code>5DBE3A03B130B7ABC6CCCC64FDEF301A</code> <code>CD3581A4E3072FE1EDCF36DE032C5E39</code> <code>ACD1846F1B4D104C28A9FFD00194ED21</code> <code>EF7D9D1229463BF0874C122A494E0199</code> <code>AACA7490CF673898CFC565DAFD9A28B8</code> <code>6F3353D46BC1922BFF930A2C18A0DD3A</code><br> <code>07265CE5</code></td>
|
||||
<td><code>FE5001004D4F434D3F9C6BA064D27B62</code> <code>E563AC86D46F79C7334187270929F137</code> <code>A2F38F241113DA6F2E07B240A10079E4</code> <code>063081F26846395786AC9F47C7363412</code> <code>3512C45D9A3D4733CDD63FCB91159F19</code> <code>D458B79193488B84D02B7F8521D7C6AA</code> <code>9F632558E436B0C865B201935AED75F6</code> <code>E4F33FE1633D1C79C9821BB62C838A1D</code> <code>F84DDE32AA6C5C19C872BB6A4835C6EA</code> <code>B93FD1C3680465210DB0E0ADEC3B155D</code> <code>742EBECEA4FB1E63CE68CAB77330543A</code> <code>7FC8ED2D2AD2A0D625BAF67E17312BE2</code> <code>C2D5C2C54C4A9C1C9F63BA207C7B8E30</code> <code>1E71B8ADC1E0C8A8B9D1C6FC1618ED64</code> <code>D07A37A7DCF9ED2DB758098F88419644</code> <code>B5422EFD62710E46D0859A224CF4B565</code> <code>2E3FE7E3C4C3BBC675AB96772904B857</code> <code>D2D8E76ADF5032A6D6AFFAE0D4EA3F91</code> <code>83B2BC2461678716F118E0F735E28A55</code> <code>8FF6BE33668C9666EA6B68049C635C34</code> <code>4783A568C59D061480A4A8EB4936FCCF</code><br> <code>6117F272</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 = 185605C9D297A7D1B678B978EB1E3B080D27D8B32BA6A9552CA454C40BB51B3CA1008A09FC99A9940E3FF2857B39DCB686031A29FCCF52751FC6D8DBCC9C3689F291DF01E9C670F4FC464329080E6DFFBFE1044637E48D6B7E2DC34D7A5444C53F390B77B8A1E8360DC22DF3867929D0A0FC6C888D6ECC288694F568E47D15A724DFB25124C00B976851F790C6285CA32A01A543AA85EE84D3BB7BEDE7234BF0E7068C329C0AECD70A636A0059CC3BEAC8EC3470E81B034CFB549BAFF782D9AA23C57BC92A3A9ECA17D9D7DF4D3EB9841D80826D80D080843E92C0908CDE7C557449824D18D702899442F7664460FBA8636CCC6E1145D31FE49C631042AA57C7</code></pre>
|
||||
<pre><code>auth_key = 4CD3C3FF187CD37E9662FB897FBB2AE7A0FC0605E197D9E38679098F6E14733C9467624818FC014391A76FB45183D0AE8BF5F93769A1391F8FC19BAE426367A4B7A756F693342FD96A66F20C6C2637495377F7FF327EF401A28828C6759EA8CFC13AF4CC3A89CA20C1C940CEF532C7885349B5CE96963BEFB2ED64E56997E87B25E2A6DBC7072C48E6859D551252A6DB73F8DA90637A8E260D7B594E75AAFA1630815853B176EBD0B2CDF9F0DD0610942C1A862F9AD477C54ED5C2286A14F043E98711310B2A9CA0C756CA68585193E692C43C61015EBEB95CF9D81A9A714B97882F250D047AE9C3669F0BDA33F8A5729B6528917CA48F4E3A45B156121CC968</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 B0 E4 05 2B CB 75 66
|
||||
0010 | 44 00 00 00 34 F7 CB 3B 46 EB 07 1F 8D C7 CB 46
|
||||
0020 | EC BA B6 10 48 F0 E8 6F 65 45 4C 9B E6 2C B4 D3
|
||||
0030 | D8 F1 42 DB F1 78 B0 D9 41 54 BD 94 89 5F 6A DD
|
||||
0040 | A0 2F 9F 0A FB 9B A2 A4</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 68 5C E9 9B ED 77 66
|
||||
0010 | B0 00 00 00 34 F7 CB 3B BD D3 43 62 8E 05 18 35
|
||||
0020 | 1B EB 12 EF BC AF BB 7C 20 FB B9 18 86 EE 0C 2E
|
||||
0030 | BF BD 51 E8 A5 03 40 98 BE BA 32 DD A2 AC 6F 94
|
||||
0040 | 07 61 48 8F 7B 8E C3 03</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>01B0E4052BCB7566</code></td>
|
||||
<td><code>01685CE99BED7766</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>44000000</code> (68 in decimal)</td>
|
||||
<td><code>B0000000</code> (176 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>46EB071F8DC7CB46ECBAB61048F0E86F</code></td>
|
||||
<td><code>BDD343628E0518351BEB12EFBCAFBB7C</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>65454C9BE62CB4D3D8F142DBF178B0D9</code></td>
|
||||
<td><code>20FBB91886EE0C2EBFBD51E8A5034098</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>4154BD94895F6ADDA02F9F0AFB9BA2A4</code></td>
|
||||
<td><code>BEBA32DDA2AC6F940761488F7B8EC303</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>
|
||||
|
|
|
@ -888,7 +888,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.updateSavedReactionTag">messages.updateSavedReactionTag</a></td>
|
||||
<td> </td>
|
||||
<td>Update the <a href="/api/saved-messages#tags">description of a saved message tag »</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/channels.setEmojiStickers">channels.setEmojiStickers</a></td>
|
||||
|
|
|
@ -101,7 +101,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><a href="/method/messages.getDefaultTagReactions">messages.getDefaultTagReactions</a></td>
|
||||
<td> </td>
|
||||
<td>Fetch a default recommended list of <a href="/api/saved-messages#tags">saved message tag reactions</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/method/messages.getSavedGifs">messages.getSavedGifs</a></td>
|
||||
<td>Get saved GIFs</td>
|
||||
<td>Get saved GIFs.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
|
|
Loading…
Reference in a new issue