Update content of files

This commit is contained in:
GitHub Action 2023-12-15 18:11:14 +00:00
parent 922b623b91
commit b15e563513
8 changed files with 486 additions and 294 deletions

View file

@ -0,0 +1,118 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Page not found</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="">
<meta property="og:title" content="Page not found">
<meta property="og:image" content="">
<meta property="og:description" content="">
<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">
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png">
<link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?236" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div class="dev_page_wrap">
<div class="dev_page_head navbar navbar-static-top navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul>
<ul class="nav navbar-nav">
<li><a href="//telegram.org/">Home</a></li>
<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li>
<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li>
<li class="active"><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class=""><a href="/schema">Schema</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix">
<div class="dev_page">
<div id="dev_page_content_wrap" class=" ">
<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></li></ul></div>
<h1 id="dev_page_title">Page not found</h1>
<div id="dev_page_content">The page has not been saved</div>
</div>
</div>
</div>
<div class="footer_wrap">
<div class="footer_columns_wrap footer_desktop">
<div class="footer_column footer_column_telegram">
<h5>Telegram</h5>
<div class="footer_telegram_description"></div>
Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
</div>
<div class="footer_column">
<h5><a href="//telegram.org/faq">About</a></h5>
<ul>
<li><a href="//telegram.org/faq">FAQ</a></li>
<li><a href="//telegram.org/privacy">Privacy</a></li>
<li><a href="//telegram.org/press">Press</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li>
<li><a href="//telegram.org/android">Android</a></li>
<li><a href="//telegram.org/dl/web">Mobile Web</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5>
<ul>
<li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li>
<li><a href="//macos.telegram.org/">macOS</a></li>
<li><a href="//telegram.org/dl/web">Web-browser</a></li>
</ul>
</div>
<div class="footer_column footer_column_platform">
<h5><a href="//core.telegram.org/">Platform</a></h5>
<ul>
<li><a href="//core.telegram.org/api">API</a></li>
<li><a href="//translations.telegram.org/">Translations</a></li>
<li><a href="//instantview.telegram.org/">Instant View</a></li>
</ul>
</div>
</div>
<div class="footer_columns_wrap footer_mobile">
<div class="footer_column">
<h5><a href="//telegram.org/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps">Apps</a></h5>
</div>
<div class="footer_column">
<h5><a href="//core.telegram.org/">Platform</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/press">Press</a></h5>
</div>
</div>
</div>
</div>
<script src="/js/main.js?47"></script>
<script>backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -0,0 +1,123 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Giveaways</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="">
<meta property="og:title" content="Giveaways">
<meta property="og:image" content="">
<meta property="og:description" content="">
<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">
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png">
<link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?236" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div class="dev_page_wrap">
<div class="dev_page_head navbar navbar-static-top navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul>
<ul class="nav navbar-nav">
<li><a href="//telegram.org/">Home</a></li>
<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li>
<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li>
<li class="active"><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class=""><a href="/schema">Schema</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix">
<div class="dev_page">
<div id="dev_page_content_wrap" class=" ">
<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="/api/giveaways" >Giveaways</a></li></ul></div>
<h1 id="dev_page_title">Giveaways</h1>
<div id="dev_page_content"><!-- scroll_nav -->
</div>
</div>
</div>
</div>
<div class="footer_wrap">
<div class="footer_columns_wrap footer_desktop">
<div class="footer_column footer_column_telegram">
<h5>Telegram</h5>
<div class="footer_telegram_description"></div>
Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
</div>
<div class="footer_column">
<h5><a href="//telegram.org/faq">About</a></h5>
<ul>
<li><a href="//telegram.org/faq">FAQ</a></li>
<li><a href="//telegram.org/privacy">Privacy</a></li>
<li><a href="//telegram.org/press">Press</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li>
<li><a href="//telegram.org/android">Android</a></li>
<li><a href="//telegram.org/dl/web">Mobile Web</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5>
<ul>
<li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li>
<li><a href="//macos.telegram.org/">macOS</a></li>
<li><a href="//telegram.org/dl/web">Web-browser</a></li>
</ul>
</div>
<div class="footer_column footer_column_platform">
<h5><a href="//core.telegram.org/">Platform</a></h5>
<ul>
<li><a href="//core.telegram.org/api">API</a></li>
<li><a href="//translations.telegram.org/">Translations</a></li>
<li><a href="//instantview.telegram.org/">Instant View</a></li>
</ul>
</div>
</div>
<div class="footer_columns_wrap footer_mobile">
<div class="footer_column">
<h5><a href="//telegram.org/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps">Apps</a></h5>
</div>
<div class="footer_column">
<h5><a href="//core.telegram.org/">Platform</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/press">Press</a></h5>
</div>
</div>
</div>
</div>
<script src="/js/main.js?47"></script>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/bootstrap.min.js?1"></script>
<script>window.initDevPageNav&&initDevPageNav();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>

View file

@ -168,7 +168,7 @@
<li>Added <a href="/method/premium.getBoostsList">premium.getBoostsList</a> - </li>
<li>Added <a href="/method/premium.getMyBoosts">premium.getMyBoosts</a> - Obtain which peers are we currently <a href="/api/boost">boosting</a>, and how many <a href="/api/boost">boost slots</a> we have left.</li>
<li>Added <a href="/method/premium.applyBoost">premium.applyBoost</a> - Apply one or more <a href="/api/boost">boosts »</a> to a peer.</li>
<li>Added <a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a> - </li>
<li>Added <a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a> - Gets the current <a href="/api/boost">boost status</a> of a peer.</li>
<li>Added <a href="/method/premium.getUserBoosts">premium.getUserBoosts</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>
@ -212,7 +212,7 @@
<li>Added <a href="/constructor/premium.boostsList">premium.boostsList</a> - List of <a href="/api/boost">boosts</a> that were applied to a peer by multiple users.</li>
<li>Added <a href="/constructor/myBoost">myBoost</a> - Contains information about a single <a href="/api/boost">boost slot »</a>.</li>
<li>Added <a href="/constructor/premium.myBoosts">premium.myBoosts</a> - A list of peers we are currently <a href="/api/boost">boosting</a>, and how many <a href="/api/boost">boost slots</a> we have left.</li>
<li>Added <a href="/constructor/premium.boostsStatus">premium.boostsStatus</a> - </li>
<li>Added <a href="/constructor/premium.boostsStatus">premium.boostsStatus</a> - Contains info about the current <a href="/api/boost">boost status</a> of a peer.</li>
<li>Added <a href="/constructor/updateBotChatBoost">updateBotChatBoost</a> - </li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>

View file

@ -4,36 +4,10 @@
<meta charset="utf-8">
<title>premium.boostsStatus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
my_boost
flags.2?true
 
level
int
 
current_level_boosts…">
<meta property="description" content="Contains info about the current boost status of a peer.">
<meta property="og:title" content="premium.boostsStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
flags
#
Flags, see TL conditional fields
my_boost
flags.2?true
 
level
int
 
current_level_boosts…">
<meta property="og:description" content="Contains info about the current boost status of a peer.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -68,7 +42,8 @@ current_level_boosts…">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/premium.boostsStatus" >premium.boostsStatus</a></li></ul></div>
<h1 id="dev_page_title">premium.boostsStatus</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Contains info about the current <a href="/api/boost">boost status</a> of a peer.</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 167 <b class="caret"></b></a>
@ -99,57 +74,63 @@ current_level_boosts…">
<tr>
<td><strong>my_boost</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td>
<td> </td>
<td>Whether we're currently boosting this channel, <code>my_boost_slots</code> will also be set.</td>
</tr>
<tr>
<td><strong>level</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>The current boost level of the channel.</td>
</tr>
<tr>
<td><strong>current_level_boosts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>The number of boosts acquired so far in the current level.</td>
</tr>
<tr>
<td><strong>boosts</strong></td>
<td style="text-align: center;"><a href="/type/int">int</a></td>
<td> </td>
<td>Total number of boosts acquired so far.</td>
</tr>
<tr>
<td><strong>gift_boosts</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td>
<td> </td>
<td>The number of boosts received by the chat from created Telegram Premium <a href="/api/gift-codes">gift codes</a> and <a href="/api/giveaways">giveaways</a>; only returned to channel admins.</td>
</tr>
<tr>
<td><strong>next_level_boosts</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/int">int</a></td>
<td> </td>
<td>Total number of boosts needed to reach the next level; if absent, the next level isn't available.</td>
</tr>
<tr>
<td><strong>premium_audience</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/StatsPercentValue">StatsPercentValue</a></td>
<td> </td>
<td>Only returned to channel admins: contains the approximated number of Premium users subscribed to the channel, related to the total number of subscribers.</td>
</tr>
<tr>
<td><strong>boost_url</strong></td>
<td style="text-align: center;"><a href="/type/string">string</a></td>
<td> </td>
<td><a href="/api/links#boost-links">Boost deep link »</a> that can be used to boost the chat.</td>
</tr>
<tr>
<td><strong>prepaid_giveaways</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PrepaidGiveaway">PrepaidGiveaway</a>&gt;</td>
<td> </td>
<td>A list of prepaid <a href="/api/giveaways">giveaways</a> available for the chat; only returned to channel admins.</td>
</tr>
<tr>
<td><strong>my_boost_slots</strong></td>
<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt;</td>
<td> </td>
<td>Indicates which of our <a href="/api/boost">boost slots</a> we've assigned to this peer (populated if <code>my_boost</code> is set).</td>
</tr>
</tbody>
</table>
<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3>
<p><a href="/type/premium.BoostsStatus">premium.BoostsStatus</a></p></div>
<p><a href="/type/premium.BoostsStatus">premium.BoostsStatus</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="#giveaways" id="giveaways" name="giveaways"><i class="anchor-icon"></i></a><a href="/api/giveaways">Giveaways</a></h4>
<h4><a class="anchor" href="#deep-links" id="deep-links" name="deep-links"><i class="anchor-icon"></i></a><a href="/api/links">Deep links</a></h4>
<p>Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.</p>
<h4><a class="anchor" href="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -4,36 +4,10 @@
<meta charset="utf-8">
<title>premium.getBoostsStatus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
premium.BoostsStatus
Possible errors
Code
Type
Description
400…">
<meta property="description" content="Gets the current boost status of a peer.">
<meta property="og:title" content="premium.getBoostsStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Parameters
Name
Type
Description
peer
InputPeer
 
Result
premium.BoostsStatus
Possible errors
Code
Type
Description
400…">
<meta property="og:description" content="Gets the current boost status of a peer.">
<link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
@ -68,7 +42,8 @@ Description
<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/premium.getBoostsStatus" >premium.getBoostsStatus</a></li></ul></div>
<h1 id="dev_page_title">premium.getBoostsStatus</h1>
<div id="dev_page_content"><p><div class="clearfix">
<div id="dev_page_content"><p>Gets the current <a href="/api/boost">boost status</a> of a peer.</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 167 <b class="caret"></b></a>
@ -96,7 +71,7 @@ Description
<tr>
<td><strong>peer</strong></td>
<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td>
<td> </td>
<td>The peer.</td>
</tr>
</tbody>
</table>
@ -118,7 +93,10 @@ Description
<td>The provided peer id 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="#channel-boosts" id="channel-boosts" name="channel-boosts"><i class="anchor-icon"></i></a><a href="/api/boost">Channel boosts</a></h4>
<p>Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.</p></div>
</div>

View file

@ -587,7 +587,7 @@ Look for updates of telegram&#39;s terms of service…">
</tr>
<tr>
<td><a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a></td>
<td> </td>
<td>Gets the current <a href="/api/boost">boost status</a> of a peer.</td>
</tr>
<tr>
<td><a href="/method/premium.getUserBoosts">premium.getUserBoosts</a></td>

View file

@ -53,9 +53,9 @@
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
<!-- start req_pq_multi -->
<p>Sent payload (excluding transport headers/trailers):</p>
<pre><code>0000 | 00 00 00 00 00 00 00 00 84 D3 04 00 2B 92 7C 65
0010 | 14 00 00 00 F1 8E 7E BE B5 10 65 80 A8 53 D8 F8
0020 | A3 DF 59 C9 34 61 01 99</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 7C 2B 0C 00 08 95 7C 65
0010 | 14 00 00 00 F1 8E 7E BE 36 95 5F 64 53 29 BE 74
0020 | AA 26 D1 0E EC 5F BD 2D</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>84D304002B927C65</code></td>
<td><code>7C2B0C0008957C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -95,7 +95,7 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</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 C8 F4 91 2B 92 7C 65
0010 | 60 00 00 00 63 24 16 05 B5 10 65 80 A8 53 D8 F8
0020 | A3 DF 59 C9 34 61 01 99 13 A6 43 4C A0 99 1F 73
0030 | 1C C7 CD BC F5 61 29 27 08 2C 89 0B 03 50 A1 43
0040 | 95 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 74 A9 2F 08 95 7C 65
0010 | A8 00 00 00 63 24 16 05 36 95 5F 64 53 29 BE 74
0020 | AA 26 D1 0E EC 5F BD 2D 77 E0 62 22 2C 3E 29 5F
0030 | D2 52 D2 9C AE F9 B1 46 08 26 FA BE 8A 23 38 D0
0040 | 3D 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>01C8F4912B927C65</code></td>
<td><code>0174A92F08957C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>60000000</code> (96 in decimal)</td>
<td><code>A8000000</code> (168 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -150,19 +150,19 @@
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Server-generated random number</td>
</tr>
<tr>
<td>pq</td>
<td>56, 12</td>
<td><code>082C890B0350A14395000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3209108318343742357</td>
<td><code>0826FABE8A2338D03D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2808766818124615741</td>
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
</tr>
<tr>
@ -208,22 +208,22 @@
<h4><a class="anchor" href="#proof-of-work" id="proof-of-work" name="proof-of-work"><i class="anchor-icon"></i></a>Proof of work</h4>
<h5><a class="anchor" href="#3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" id="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q" name="3-client-decomposes-pq-into-prime-factors-such-that-p-lt-q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p &lt; q.</h5>
<!-- start pq -->
<pre><code>pq = 3209108318343742357</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>3209108318343742357 = 1617897103 * 1983505819</code></p>
<pre><code>p = 1617897103
q = 1983505819</code></pre>
<pre><code>pq = 2808766818124615741</code></pre>
<p>Decompose into 2 prime cofactors <code>p &lt; q</code>: <code>2808766818124615741 = 1437256297 * 1954256053</code></p>
<pre><code>p = 1437256297
q = 1954256053</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 2C 89 0B 03 50 A1 43 95 00 00 00
0010 | 04 60 6F 26 8F 00 00 00 04 76 39 E5 9B 00 00 00
0020 | B5 10 65 80 A8 53 D8 F8 A3 DF 59 C9 34 61 01 99
0030 | 13 A6 43 4C A0 99 1F 73 1C C7 CD BC F5 61 29 27
0040 | 60 7D 7D 78 2C 96 A7 03 3C 7F 13 54 7F D0 8D E7
0050 | A8 2B A4 A1 E3 22 5F 95 7C 63 58 C2 C1 A3 50 EB
<pre><code>0000 | 95 5F F5 A9 08 26 FA BE 8A 23 38 D0 3D 00 00 00
0010 | 04 55 AA CA 69 00 00 00 04 74 7B 94 B5 00 00 00
0020 | 36 95 5F 64 53 29 BE 74 AA 26 D1 0E EC 5F BD 2D
0030 | 77 E0 62 22 2C 3E 29 5F D2 52 D2 9C AE F9 B1 46
0040 | 80 60 79 CB DD A7 E5 41 38 9F 59 49 DB B4 73 C2
0050 | 12 1B 05 1E 2A 27 EE 60 41 DF 34 44 82 97 F8 14
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 = 1983505819</code></pre>
<tr>
<td>pq</td>
<td>4, 12</td>
<td><code>082C890B0350A14395000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 3209108318343742357</td>
<td><code>0826FABE8A2338D03D000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 2808766818124615741</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>04606F268F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1617897103</td>
<td><code>0455AACA69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1437256297</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>047639E59B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1983505819</td>
<td><code>04747B94B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1954256053</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>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>48, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce</td>
<td>64, 32</td>
<td><code>607D7D782C96A7033C7F13547FD08DE7</code> <code>A82BA4A1E3225F957C6358C2C1A350EB</code></td>
<td><code>806079CBDDA7E541389F5949DBB473C2</code> <code>121B051E2A27EE6041DF34448297F814</code></td>
<td>Client-generated random number</td>
</tr>
<tr>
@ -291,39 +291,39 @@ q = 1983505819</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 = 955FF5A9082C890B0350A1439500000004606F268F000000047639E59B000000B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF5612927607D7D782C96A7033C7F13547FD08DE7A82BA4A1E3225F957C6358C2C1A350EB02000000
random_padding_bytes = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7BE075FEB23383A59B6437FBA350FEB6A0B03E22D6B02BC211AB936A36E226D794C7BC084BDAA043731BAB14BBD8EA8835D0587DFE3B4E917EE115EADBA5A133F</code></pre>
<pre><code>data = 955FF5A90826FABE8A2338D03D0000000455AACA6900000004747B94B500000036955F645329BE74AA26D10EEC5FBD2D77E062222C3E295FD252D29CAEF9B146806079CBDDA7E541389F5949DBB473C2121B051E2A27EE6041DF34448297F81402000000
random_padding_bytes = 0DD53F136121D8EF9B58F2C098AECB84809DB9D3530AFDBC240B48FB53DD9487358DFDBA83C2A288C25735678BF7164E5103AAB9F10B833A8502505D2A0D6D536031D939DF12142E931D167DC04764117C7D5B27D0F047AEAE2BFE37</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 = 75C41209512F89246CAE08AD3B140242085E523FD733BF3EAD375217260628EAF2D17D9439D35E966C71DCE1FF7722377D93C012909862B07EA8E5F02D2F32C2314ABC54747778E337A91EE415B187B2A06033D55C278ADA567A2C36BC4A0AB247DF7292636EDA00BD92E72A78DEA581419943F17E1B971ED1325A69CEA40EFB1102FBD573796B18CF30B2AEFC232BB81A0ECF2F4991C62C91F5C3E90265031B84C3C4BE1FE8056EDB77B210D536E4398821EF24DB2AA5B9529FE3E899B1F646E05FE1D4DDE3745036B5ECB1267229F08C0AC6D32477F69672FDAA5CACCCFCDAD06C5733607D10561CC579CF955F4A884A38607A8DBB9797F59B70718E8B779F</code></pre>
<pre><code>encrypted_data = 13A3D5B0D43F057E4A2910F5838D2558452709CEACD9CD1863ADBCD44F70EE90FD9E9D1E80BBBE81F1486F2C1D468F4E89451436A57E2ED75137E3543CD44C0F88429C97361E7E5B22E791B3B131EDCEC8F4B7F258A9FDB8D4CB592C6AC3E47DBFB68E8111A1A7280042ECC1F6D80F5067AE421054A12E299580FC0E1986FC79569F04942699C582521052982DA68376B9412E01A8F17958B8767CDB4912D9752F476B515C920957ED1D2E5332D48EA4AF3B3B52CFFFAEAAEB359B38E74D0838FA1C3EB21D02594203C9E49F14A70E8E348B0A1072B7834F59FBF8028ADEE1792F226CCC699623D9D255122D07460B855BAB532D99F3F4CADF4E706CB5B9707E</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 AC 96 0B 00 2B 92 7C 65
0010 | 40 01 00 00 BE E4 12 D7 B5 10 65 80 A8 53 D8 F8
0020 | A3 DF 59 C9 34 61 01 99 13 A6 43 4C A0 99 1F 73
0030 | 1C C7 CD BC F5 61 29 27 04 60 6F 26 8F 00 00 00
0040 | 04 76 39 E5 9B 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 75 C4 12 09 51 2F 89 24 6C AE 08 AD
0060 | 3B 14 02 42 08 5E 52 3F D7 33 BF 3E AD 37 52 17
0070 | 26 06 28 EA F2 D1 7D 94 39 D3 5E 96 6C 71 DC E1
0080 | FF 77 22 37 7D 93 C0 12 90 98 62 B0 7E A8 E5 F0
0090 | 2D 2F 32 C2 31 4A BC 54 74 77 78 E3 37 A9 1E E4
00A0 | 15 B1 87 B2 A0 60 33 D5 5C 27 8A DA 56 7A 2C 36
00B0 | BC 4A 0A B2 47 DF 72 92 63 6E DA 00 BD 92 E7 2A
00C0 | 78 DE A5 81 41 99 43 F1 7E 1B 97 1E D1 32 5A 69
00D0 | CE A4 0E FB 11 02 FB D5 73 79 6B 18 CF 30 B2 AE
00E0 | FC 23 2B B8 1A 0E CF 2F 49 91 C6 2C 91 F5 C3 E9
00F0 | 02 65 03 1B 84 C3 C4 BE 1F E8 05 6E DB 77 B2 10
0100 | D5 36 E4 39 88 21 EF 24 DB 2A A5 B9 52 9F E3 E8
0110 | 99 B1 F6 46 E0 5F E1 D4 DD E3 74 50 36 B5 EC B1
0120 | 26 72 29 F0 8C 0A C6 D3 24 77 F6 96 72 FD AA 5C
0130 | AC CC FC DA D0 6C 57 33 60 7D 10 56 1C C5 79 CF
0140 | 95 5F 4A 88 4A 38 60 7A 8D BB 97 97 F5 9B 70 71
0150 | 8E 8B 77 9F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 7C 39 0F 00 08 95 7C 65
0010 | 40 01 00 00 BE E4 12 D7 36 95 5F 64 53 29 BE 74
0020 | AA 26 D1 0E EC 5F BD 2D 77 E0 62 22 2C 3E 29 5F
0030 | D2 52 D2 9C AE F9 B1 46 04 55 AA CA 69 00 00 00
0040 | 04 74 7B 94 B5 00 00 00 85 FD 64 DE 85 1D 9D D0
0050 | FE 00 01 00 13 A3 D5 B0 D4 3F 05 7E 4A 29 10 F5
0060 | 83 8D 25 58 45 27 09 CE AC D9 CD 18 63 AD BC D4
0070 | 4F 70 EE 90 FD 9E 9D 1E 80 BB BE 81 F1 48 6F 2C
0080 | 1D 46 8F 4E 89 45 14 36 A5 7E 2E D7 51 37 E3 54
0090 | 3C D4 4C 0F 88 42 9C 97 36 1E 7E 5B 22 E7 91 B3
00A0 | B1 31 ED CE C8 F4 B7 F2 58 A9 FD B8 D4 CB 59 2C
00B0 | 6A C3 E4 7D BF B6 8E 81 11 A1 A7 28 00 42 EC C1
00C0 | F6 D8 0F 50 67 AE 42 10 54 A1 2E 29 95 80 FC 0E
00D0 | 19 86 FC 79 56 9F 04 94 26 99 C5 82 52 10 52 98
00E0 | 2D A6 83 76 B9 41 2E 01 A8 F1 79 58 B8 76 7C DB
00F0 | 49 12 D9 75 2F 47 6B 51 5C 92 09 57 ED 1D 2E 53
0100 | 32 D4 8E A4 AF 3B 3B 52 CF FF AE AA EB 35 9B 38
0110 | E7 4D 08 38 FA 1C 3E B2 1D 02 59 42 03 C9 E4 9F
0120 | 14 A7 0E 8E 34 8B 0A 10 72 B7 83 4F 59 FB F8 02
0130 | 8A DE E1 79 2F 22 6C CC 69 96 23 D9 D2 55 12 2D
0140 | 07 46 0B 85 5B AB 53 2D 99 F3 F4 CA DF 4E 70 6C
0150 | B5 B9 70 7E</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 = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7B
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>AC960B002B927C65</code></td>
<td><code>7C390F0008957C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -363,25 +363,25 @@ random_padding_bytes = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7B
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>p</td>
<td>56, 8</td>
<td><code>04606F268F000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1617897103</td>
<td><code>0455AACA69000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1437256297</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>047639E59B000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1983505819</td>
<td><code>04747B94B5000000</code><br>TL byte deserialization <br>=&gt; bigendian conversion to decimal<br>=&gt; 1954256053</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 = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7B
<tr>
<td>encrypted_data</td>
<td>80, 260</td>
<td><code>FE00010075C41209512F89246CAE08AD</code> <code>3B140242085E523FD733BF3EAD375217</code> <code>260628EAF2D17D9439D35E966C71DCE1</code> <code>FF7722377D93C012909862B07EA8E5F0</code> <code>2D2F32C2314ABC54747778E337A91EE4</code> <code>15B187B2A06033D55C278ADA567A2C36</code> <code>BC4A0AB247DF7292636EDA00BD92E72A</code> <code>78DEA581419943F17E1B971ED1325A69</code> <code>CEA40EFB1102FBD573796B18CF30B2AE</code> <code>FC232BB81A0ECF2F4991C62C91F5C3E9</code> <code>0265031B84C3C4BE1FE8056EDB77B210</code> <code>D536E4398821EF24DB2AA5B9529FE3E8</code> <code>99B1F646E05FE1D4DDE3745036B5ECB1</code> <code>267229F08C0AC6D32477F69672FDAA5C</code> <code>ACCCFCDAD06C5733607D10561CC579CF</code> <code>955F4A884A38607A8DBB9797F59B7071</code><br> <code>8E8B779F</code></td>
<td><code>FE00010013A3D5B0D43F057E4A2910F5</code> <code>838D2558452709CEACD9CD1863ADBCD4</code> <code>4F70EE90FD9E9D1E80BBBE81F1486F2C</code> <code>1D468F4E89451436A57E2ED75137E354</code> <code>3CD44C0F88429C97361E7E5B22E791B3</code> <code>B131EDCEC8F4B7F258A9FDB8D4CB592C</code> <code>6AC3E47DBFB68E8111A1A7280042ECC1</code> <code>F6D80F5067AE421054A12E299580FC0E</code> <code>1986FC79569F04942699C58252105298</code> <code>2DA68376B9412E01A8F17958B8767CDB</code> <code>4912D9752F476B515C920957ED1D2E53</code> <code>32D48EA4AF3B3B52CFFFAEAAEB359B38</code> <code>E74D0838FA1C3EB21D02594203C9E49F</code> <code>14A70E8E348B0A1072B7834F59FBF802</code> <code>8ADEE1792F226CCC699623D9D255122D</code> <code>07460B855BAB532D99F3F4CADF4E706C</code><br> <code>B5B9707E</code></td>
<td>Value generated above</td>
</tr>
</tbody>
@ -402,47 +402,47 @@ random_padding_bytes = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7B
<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 10 B7 27 2C 92 7C 65
0010 | 8C 02 00 00 5C 07 E8 D0 B5 10 65 80 A8 53 D8 F8
0020 | A3 DF 59 C9 34 61 01 99 13 A6 43 4C A0 99 1F 73
0030 | 1C C7 CD BC F5 61 29 27 FE 50 02 00 68 53 BE 75
0040 | B8 ED C1 53 E5 38 C8 76 A0 55 64 56 43 29 7C 47
0050 | D5 02 8E 2C 94 04 FE 52 D5 68 F5 84 1C 40 5A AB
0060 | FD D0 3F 6C E8 26 F2 CB 90 A7 FC F1 FC 52 FF 11
0070 | AF AA A9 62 11 9D A6 E1 F0 35 84 85 12 AE 1E 38
0080 | DF 5E 69 6C 9B 93 69 5D B1 D7 2F DE 5A D4 14 4A
0090 | E7 5F D8 4D 50 9D A6 C4 7B 7D 2B 8B 07 F5 9F D4
00A0 | 3C AF A0 D9 51 E6 2C FD 53 AB 2C 9A B7 86 87 5D
00B0 | 8C 04 FC FB 1E 53 10 FC AF A8 D0 28 65 0B 1E E3
00C0 | B6 37 9D 63 21 71 0F 11 15 F1 B9 5E DC FF 95 F2
00D0 | BA 4D 45 AD 52 FB F8 24 0E 19 FE 07 20 56 AF 36
00E0 | DE DA 9E 56 D2 CD 3F A0 34 C9 9B 9F 43 F8 AE FC
00F0 | 5E 93 8A CA 2B D4 96 CB 16 51 74 C2 CF B8 0B 4B
0100 | 9D 5F C1 B8 E3 BA A6 45 1B 0F 6B D0 DE F5 F8 FB
0110 | 23 5F 6E D3 4E 3E A4 7C F1 A2 9F 70 0D 27 EB CE
0120 | C5 64 13 72 61 39 FB C9 13 38 42 EF CB 89 E2 E0
0130 | B8 19 2C E8 1A 53 62 C3 7F D6 2B 18 3C 0F 3D 03
0140 | 06 62 D7 6D 9F 23 D9 0A C0 4F 08 39 EA 84 AB 50
0150 | D3 DF 18 D9 38 A7 BF 66 EE 71 E6 BA 26 2C 4F 2D
0160 | E8 A1 7F DB 60 D6 4D 75 96 49 C1 EC F6 BF C5 91
0170 | 92 0F 78 8B 6C 0C FE BE 36 E5 08 E5 B9 DD C6 9E
0180 | 3D B2 54 C1 0D E9 45 76 FB 00 9E 03 46 AD 6D 8A
0190 | 7F 00 D4 4B 80 EE 02 48 4A 49 9D A7 77 E2 09 7D
01A0 | E7 0C 89 E6 0C 7B 64 50 AE CB 83 F7 D1 0E 44 78
01B0 | FE 52 39 AA 45 33 14 94 57 E9 A6 6D 93 7D 51 05
01C0 | 55 42 1A 64 42 00 D2 18 72 4F B7 57 09 A7 02 0D
01D0 | 4B 50 6C 40 4C 2B 15 4D 93 48 AF AC 32 AC D3 2B
01E0 | 11 1F B0 92 EE 58 85 04 5F BA 6D CF D6 96 F2 CB
01F0 | DF 43 98 03 C4 BE DB 4D 84 2E 3D 01 10 CF D8 D5
0200 | E5 2E 95 A6 3F 42 AD 92 7C 62 03 30 87 16 38 86
0210 | C8 ED 99 3B 64 B2 6F 2D D2 E3 C2 A6 CF 5C 8B DE
0220 | 98 59 D2 96 A5 AA 4C B9 82 16 51 CB 6D 9F A7 D5
0230 | 68 BE 3D 74 75 AB 5C B3 F4 E0 BD 45 E6 80 2E 1B
0240 | 76 47 DF A6 1C 0B EB 9B 07 80 42 C2 36 46 7C 40
0250 | 03 E9 D6 3F 66 E8 AF DE 52 15 EF 1B 72 AB 1F 6D
0260 | B8 2F C3 A5 5B F9 16 3E FF 20 6C 4E DB EB D4 91
0270 | 85 AE 63 7D F5 3F 8C DC 05 9C 01 D8 1B 54 3B 72
0280 | 9F 59 57 A4 C4 E7 9B B5 E9 75 34 BA</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 AC 55 08 09 95 7C 65
0010 | 98 02 00 00 5C 07 E8 D0 36 95 5F 64 53 29 BE 74
0020 | AA 26 D1 0E EC 5F BD 2D 77 E0 62 22 2C 3E 29 5F
0030 | D2 52 D2 9C AE F9 B1 46 FE 50 02 00 B8 2D 65 46
0040 | 4E D8 54 A3 4F 68 19 B5 A3 88 67 7B 0E 08 91 75
0050 | 0D 0F 83 AD C6 7F 2D 48 D5 D2 92 C7 74 EA B8 FB
0060 | E7 11 02 98 C3 AD 6E B2 D5 E8 2B 14 73 4F 0A 56
0070 | 82 03 EC BE 81 92 02 C6 2E EC 2E 17 FB E0 53 B5
0080 | 88 DE 6B 2C 44 62 55 B2 9C F9 03 D4 B3 CC 79 40
0090 | 4B FA BF 1E 5D 8E F6 F3 B2 B1 2E 18 9E A7 0F 5C
00A0 | 58 B0 3C 90 50 6C 1A 7F 8D A0 16 AC B4 61 BB E4
00B0 | 91 2E 5F D5 46 3C 44 95 38 00 B8 AE 37 5A 32 BE
00C0 | 2D 58 2B DC 23 51 EA F5 B1 FE 8F C9 AD 22 D4 91
00D0 | 74 E3 FE 9C E9 48 62 62 D4 80 A5 6C 2F E2 DC A0
00E0 | 1B B8 A1 3F 86 A6 D5 C8 1A E7 2D 0B 96 FC 04 02
00F0 | E0 CA 50 E1 99 23 9A 3A 1F FC 67 9B D5 95 AA ED
0100 | 76 49 92 64 3B 12 10 00 4D 29 B1 03 26 D4 92 E9
0110 | EA AA AF 2A 51 22 9F 2D 5D C1 67 50 6B E3 A5 D2
0120 | D7 5F E4 9E A7 CF D4 4B 31 6E 9D 6B 78 EE BF 6E
0130 | F9 F9 3B BE 06 BD 6D 31 34 DF AF 96 1C 5F 10 A5
0140 | 6A 22 C4 5E E3 13 1D 87 AB 34 C3 90 15 C5 7D 69
0150 | 07 C4 2F 53 DB 2E F3 E8 8B 65 BE 6B 36 F7 73 A4
0160 | 39 75 38 0E DE 68 11 3C A2 39 68 72 E0 55 C3 DA
0170 | EB 03 9D FB 82 BA 33 80 63 86 AD 18 85 4A 00 ED
0180 | 01 87 EF 48 99 86 CC 53 BA 4E AD BD 72 02 B7 9B
0190 | DE 13 AE 5E 02 8E 9D DE 70 E2 50 89 29 65 75 37
01A0 | C7 B0 89 42 59 13 30 AD 13 8B D4 5D B7 33 48 85
01B0 | C0 13 17 00 32 B6 01 3E A4 AA 08 D3 DB CF 79 AB
01C0 | F2 0B FD 68 B5 8D 08 28 2A E6 0D 5E 51 4C 77 A4
01D0 | 2A 45 23 D0 E9 9D B2 97 08 77 22 FA 19 D1 41 BE
01E0 | 46 38 3F A2 E1 B7 03 8E DC 8A 6C 7C 04 B6 40 83
01F0 | 09 78 02 D8 EB 79 54 37 C7 8B A0 80 05 6A AB 07
0200 | F3 2B DD 1C 11 75 15 44 23 0D 7B 60 55 C0 5A 48
0210 | 24 F9 A5 B2 61 C6 C6 5A A0 DB 8E 02 33 B9 8C D5
0220 | FE 96 12 A5 EF D0 D0 E1 8D 47 DB C1 4E B9 BD E3
0230 | FD F9 47 3C 16 B4 A8 99 C5 38 70 8A 20 11 65 91
0240 | 94 EB 05 90 79 D0 AA D4 58 2B BF 7C A3 65 54 76
0250 | 4F E8 7E DB 60 1D A1 EE B9 5A 94 F1 F8 59 31 F4
0260 | A8 30 25 D9 FB 59 4B 67 D6 EC B5 B5 B6 76 A5 7B
0270 | 93 E6 27 F0 90 2A 4B A6 EF 45 7D C2 78 84 7D 80
0280 | CD 56 9B 86 5F B2 0A A2 BE C4 D2 2F</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 = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7B
<tr>
<td>message_id</td>
<td>8, 8</td>
<td><code>0110B7272C927C65</code></td>
<td><code>01AC550809957C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>8C020000</code> (652 in decimal)</td>
<td><code>98020000</code> (664 in decimal)</td>
<td>Message body length</td>
</tr>
<tr>
@ -482,19 +482,19 @@ random_padding_bytes = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7B
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_answer</td>
<td>56, 596</td>
<td><code>FE5002006853BE75B8EDC153E538C876</code> <code>A055645643297C47D5028E2C9404FE52</code> <code>D568F5841C405AABFDD03F6CE826F2CB</code> <code>90A7FCF1FC52FF11AFAAA962119DA6E1</code> <code>F035848512AE1E38DF5E696C9B93695D</code> <code>B1D72FDE5AD4144AE75FD84D509DA6C4</code> <code>7B7D2B8B07F59FD43CAFA0D951E62CFD</code> <code>53AB2C9AB786875D8C04FCFB1E5310FC</code> <code>AFA8D028650B1EE3B6379D6321710F11</code> <code>15F1B95EDCFF95F2BA4D45AD52FBF824</code> <code>0E19FE072056AF36DEDA9E56D2CD3FA0</code> <code>34C99B9F43F8AEFC5E938ACA2BD496CB</code> <code>165174C2CFB80B4B9D5FC1B8E3BAA645</code> <code>1B0F6BD0DEF5F8FB235F6ED34E3EA47C</code> <code>F1A29F700D27EBCEC56413726139FBC9</code> <code>133842EFCB89E2E0B8192CE81A5362C3</code> <code>7FD62B183C0F3D030662D76D9F23D90A</code> <code>C04F0839EA84AB50D3DF18D938A7BF66</code> <code>EE71E6BA262C4F2DE8A17FDB60D64D75</code> <code>9649C1ECF6BFC591920F788B6C0CFEBE</code> <code>36E508E5B9DDC69E3DB254C10DE94576</code> <code>FB009E0346AD6D8A7F00D44B80EE0248</code> <code>4A499DA777E2097DE70C89E60C7B6450</code> <code>AECB83F7D10E4478FE5239AA45331494</code> <code>57E9A66D937D510555421A644200D218</code> <code>724FB75709A7020D4B506C404C2B154D</code> <code>9348AFAC32ACD32B111FB092EE588504</code> <code>5FBA6DCFD696F2CBDF439803C4BEDB4D</code> <code>842E3D0110CFD8D5E52E95A63F42AD92</code> <code>7C62033087163886C8ED993B64B26F2D</code> <code>D2E3C2A6CF5C8BDE9859D296A5AA4CB9</code> <code>821651CB6D9FA7D568BE3D7475AB5CB3</code> <code>F4E0BD45E6802E1B7647DFA61C0BEB9B</code> <code>078042C236467C4003E9D63F66E8AFDE</code> <code>5215EF1B72AB1F6DB82FC3A55BF9163E</code> <code>FF206C4EDBEBD49185AE637DF53F8CDC</code> <code>059C01D81B543B729F5957A4C4E79BB5</code><br> <code>E97534BA</code></td>
<td><code>FE500200B82D65464ED854A34F6819B5</code> <code>A388677B0E0891750D0F83ADC67F2D48</code> <code>D5D292C774EAB8FBE7110298C3AD6EB2</code> <code>D5E82B14734F0A568203ECBE819202C6</code> <code>2EEC2E17FBE053B588DE6B2C446255B2</code> <code>9CF903D4B3CC79404BFABF1E5D8EF6F3</code> <code>B2B12E189EA70F5C58B03C90506C1A7F</code> <code>8DA016ACB461BBE4912E5FD5463C4495</code> <code>3800B8AE375A32BE2D582BDC2351EAF5</code> <code>B1FE8FC9AD22D49174E3FE9CE9486262</code> <code>D480A56C2FE2DCA01BB8A13F86A6D5C8</code> <code>1AE72D0B96FC0402E0CA50E199239A3A</code> <code>1FFC679BD595AAED764992643B121000</code> <code>4D29B10326D492E9EAAAAF2A51229F2D</code> <code>5DC167506BE3A5D2D75FE49EA7CFD44B</code> <code>316E9D6B78EEBF6EF9F93BBE06BD6D31</code> <code>34DFAF961C5F10A56A22C45EE3131D87</code> <code>AB34C39015C57D6907C42F53DB2EF3E8</code> <code>8B65BE6B36F773A43975380EDE68113C</code> <code>A2396872E055C3DAEB039DFB82BA3380</code> <code>6386AD18854A00ED0187EF489986CC53</code> <code>BA4EADBD7202B79BDE13AE5E028E9DDE</code> <code>70E2508929657537C7B08942591330AD</code> <code>138BD45DB7334885C013170032B6013E</code> <code>A4AA08D3DBCF79ABF20BFD68B58D0828</code> <code>2AE60D5E514C77A42A4523D0E99DB297</code> <code>087722FA19D141BE46383FA2E1B7038E</code> <code>DC8A6C7C04B64083097802D8EB795437</code> <code>C78BA080056AAB07F32BDD1C11751544</code> <code>230D7B6055C05A4824F9A5B261C6C65A</code> <code>A0DB8E0233B98CD5FE9612A5EFD0D0E1</code> <code>8D47DBC14EB9BDE3FDF9473C16B4A899</code> <code>C538708A2011659194EB059079D0AAD4</code> <code>582BBF7CA36554764FE87EDB601DA1EE</code> <code>B95A94F1F85931F4A83025D9FB594B67</code> <code>D6ECB5B5B676A57B93E627F0902A4BA6</code> <code>EF457DC278847D80CD569B865FB20AA2</code><br> <code>BEC4D22F</code></td>
<td>See below</td>
</tr>
</tbody>
@ -502,20 +502,20 @@ random_padding_bytes = 4C3471B040D96D83504DF135DD38DCBCB14DB78FC791727988FB4EF7B
<!-- 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 = 6853BE75B8EDC153E538C876A055645643297C47D5028E2C9404FE52D568F5841C405AABFDD03F6CE826F2CB90A7FCF1FC52FF11AFAAA962119DA6E1F035848512AE1E38DF5E696C9B93695DB1D72FDE5AD4144AE75FD84D509DA6C47B7D2B8B07F59FD43CAFA0D951E62CFD53AB2C9AB786875D8C04FCFB1E5310FCAFA8D028650B1EE3B6379D6321710F1115F1B95EDCFF95F2BA4D45AD52FBF8240E19FE072056AF36DEDA9E56D2CD3FA034C99B9F43F8AEFC5E938ACA2BD496CB165174C2CFB80B4B9D5FC1B8E3BAA6451B0F6BD0DEF5F8FB235F6ED34E3EA47CF1A29F700D27EBCEC56413726139FBC9133842EFCB89E2E0B8192CE81A5362C37FD62B183C0F3D030662D76D9F23D90AC04F0839EA84AB50D3DF18D938A7BF66EE71E6BA262C4F2DE8A17FDB60D64D759649C1ECF6BFC591920F788B6C0CFEBE36E508E5B9DDC69E3DB254C10DE94576FB009E0346AD6D8A7F00D44B80EE02484A499DA777E2097DE70C89E60C7B6450AECB83F7D10E4478FE5239AA4533149457E9A66D937D510555421A644200D218724FB75709A7020D4B506C404C2B154D9348AFAC32ACD32B111FB092EE5885045FBA6DCFD696F2CBDF439803C4BEDB4D842E3D0110CFD8D5E52E95A63F42AD927C62033087163886C8ED993B64B26F2DD2E3C2A6CF5C8BDE9859D296A5AA4CB9821651CB6D9FA7D568BE3D7475AB5CB3F4E0BD45E6802E1B7647DFA61C0BEB9B078042C236467C4003E9D63F66E8AFDE5215EF1B72AB1F6DB82FC3A55BF9163EFF206C4EDBEBD49185AE637DF53F8CDC059C01D81B543B729F5957A4C4E79BB5E97534BA
tmp_aes_key = D7DB3A5CBE76732E7C40207C176219F421EA89FC4406E027086FE19674F181B9
tmp_aes_iv = 310989E9F54E7C900B18180B9B0A370BF3FB82758A1EB8AFD94700BD607D7D78</code></pre>
<pre><code>encrypted_answer = B82D65464ED854A34F6819B5A388677B0E0891750D0F83ADC67F2D48D5D292C774EAB8FBE7110298C3AD6EB2D5E82B14734F0A568203ECBE819202C62EEC2E17FBE053B588DE6B2C446255B29CF903D4B3CC79404BFABF1E5D8EF6F3B2B12E189EA70F5C58B03C90506C1A7F8DA016ACB461BBE4912E5FD5463C44953800B8AE375A32BE2D582BDC2351EAF5B1FE8FC9AD22D49174E3FE9CE9486262D480A56C2FE2DCA01BB8A13F86A6D5C81AE72D0B96FC0402E0CA50E199239A3A1FFC679BD595AAED764992643B1210004D29B10326D492E9EAAAAF2A51229F2D5DC167506BE3A5D2D75FE49EA7CFD44B316E9D6B78EEBF6EF9F93BBE06BD6D3134DFAF961C5F10A56A22C45EE3131D87AB34C39015C57D6907C42F53DB2EF3E88B65BE6B36F773A43975380EDE68113CA2396872E055C3DAEB039DFB82BA33806386AD18854A00ED0187EF489986CC53BA4EADBD7202B79BDE13AE5E028E9DDE70E2508929657537C7B08942591330AD138BD45DB7334885C013170032B6013EA4AA08D3DBCF79ABF20BFD68B58D08282AE60D5E514C77A42A4523D0E99DB297087722FA19D141BE46383FA2E1B7038EDC8A6C7C04B64083097802D8EB795437C78BA080056AAB07F32BDD1C11751544230D7B6055C05A4824F9A5B261C6C65AA0DB8E0233B98CD5FE9612A5EFD0D0E18D47DBC14EB9BDE3FDF9473C16B4A899C538708A2011659194EB059079D0AAD4582BBF7CA36554764FE87EDB601DA1EEB95A94F1F85931F4A83025D9FB594B67D6ECB5B5B676A57B93E627F0902A4BA6EF457DC278847D80CD569B865FB20AA2BEC4D22F
tmp_aes_key = EA8E6BCE75807282BBA87A24BB3ADA8642FA637C7897F6C256316BA3634FABD8
tmp_aes_iv = AD8254DDD5E3F0B4D3CA8C1778B838EF3490128FD67D33742993BD3D806079CB</code></pre>
<!-- end server_DH_inner_data_input -->
<p>Yielding:</p>
<!-- start server_DH_inner_data_output -->
<pre><code>answer_with_hash = 2D5764EAAF98C1C588DD69F329786D18A15F8093BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BBCF36C7A84BA7DB516000161E761E173703460395A1DE26B8CE2EB69872E4969F8CEFC53C2BE9373F13DEE6F183E214CD2B98E205283DB29EEBB0E7320C62670CC115883E4D138075B99B1A275D7E015E321DAA419965C3A7FB8F6EDF10A94BC8015608BBFC2341415C3A27FE6E15821574ECDED063C8C0397FA0C2AABA45BCEACE6056A2CCA9BF87046D5B7C065DA3A38D15E25B702463176627A2CA1DEB0E0D58CEB178E2814DE5FF8948E721CEDE7759BE4CAE8A388BD52395897C97542AE030B47FB45D0E969F1EF15DA0D6EC1CEF6E1C16AB596659AEFD72E0006A766537B15099FF7875F1A1A7B52ED3AAC561C30455BC8F8E84C80CE2DD48ED9FCBCF2C927C651462563185EB3F5A
answer = BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292703000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100BBCF36C7A84BA7DB516000161E761E173703460395A1DE26B8CE2EB69872E4969F8CEFC53C2BE9373F13DEE6F183E214CD2B98E205283DB29EEBB0E7320C62670CC115883E4D138075B99B1A275D7E015E321DAA419965C3A7FB8F6EDF10A94BC8015608BBFC2341415C3A27FE6E15821574ECDED063C8C0397FA0C2AABA45BCEACE6056A2CCA9BF87046D5B7C065DA3A38D15E25B702463176627A2CA1DEB0E0D58CEB178E2814DE5FF8948E721CEDE7759BE4CAE8A388BD52395897C97542AE030B47FB45D0E969F1EF15DA0D6EC1CEF6E1C16AB596659AEFD72E0006A766537B15099FF7875F1A1A7B52ED3AAC561C30455BC8F8E84C80CE2DD48ED9FCBCF2C927C651462563185EB3F5A</code></pre>
<pre><code>answer_with_hash = 4985915768EE8706A55FCF4BF1B0E16EB8FDDAFBBA0D89B536955F645329BE74AA26D10EEC5FBD2D77E062222C3E295FD252D29CAEF9B14603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000D75FB27EAD322EEBF3B061FE047C707475E8838B537D00B8C1C7E034B4DCBF7F955D9FBDF8B0DB1703DB24975B74CB3E015DF174950972A85504E618899643979B68E7C855500221F22121C86A6290D440DFC27274F58CD94C56B3BAF6B574889B89AFC7F6DA0272436DCF29AFA4CAE98AC7C21DF1D04CA1B15C8ABD78A451B14E24CE5D29A59DD53CD7D20E5FCE1AE1CB16CF916AABE075BFAF3D6BC10C013E0B7AC18C353F5FE2E1CC9D6F342E5FEB175B01A6239F8E87088D8DD7BF70AE07FA56DF8AB68F6CFE4AEF3FF6EC0EF5AF09B6328D51B709E7309E08BF66932ED3D4CE5DFA3B37E445453D2611E20BDBB0DF6BFE7C001099D0C971B2BF84CBD4209957C65425D81AC5A90E1D4
answer = BA0D89B536955F645329BE74AA26D10EEC5FBD2D77E062222C3E295FD252D29CAEF9B14603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001000D75FB27EAD322EEBF3B061FE047C707475E8838B537D00B8C1C7E034B4DCBF7F955D9FBDF8B0DB1703DB24975B74CB3E015DF174950972A85504E618899643979B68E7C855500221F22121C86A6290D440DFC27274F58CD94C56B3BAF6B574889B89AFC7F6DA0272436DCF29AFA4CAE98AC7C21DF1D04CA1B15C8ABD78A451B14E24CE5D29A59DD53CD7D20E5FCE1AE1CB16CF916AABE075BFAF3D6BC10C013E0B7AC18C353F5FE2E1CC9D6F342E5FEB175B01A6239F8E87088D8DD7BF70AE07FA56DF8AB68F6CFE4AEF3FF6EC0EF5AF09B6328D51B709E7309E08BF66932ED3D4CE5DFA3B37E445453D2611E20BDBB0DF6BFE7C001099D0C971B2BF84CBD4209957C65425D81AC5A90E1D4</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 B5 10 65 80 A8 53 D8 F8 A3 DF 59 C9
0010 | 34 61 01 99 13 A6 43 4C A0 99 1F 73 1C C7 CD BC
0020 | F5 61 29 27 03 00 00 00 FE 00 01 00 C7 1C AE B9
<pre><code>0000 | BA 0D 89 B5 36 95 5F 64 53 29 BE 74 AA 26 D1 0E
0010 | EC 5F BD 2D 77 E0 62 22 2C 3E 29 5F D2 52 D2 9C
0020 | AE F9 B1 46 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 = BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292
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 | BB CF 36 C7 A8 4B A7 DB 51 60 00 16 1E 76 1E 17
0140 | 37 03 46 03 95 A1 DE 26 B8 CE 2E B6 98 72 E4 96
0150 | 9F 8C EF C5 3C 2B E9 37 3F 13 DE E6 F1 83 E2 14
0160 | CD 2B 98 E2 05 28 3D B2 9E EB B0 E7 32 0C 62 67
0170 | 0C C1 15 88 3E 4D 13 80 75 B9 9B 1A 27 5D 7E 01
0180 | 5E 32 1D AA 41 99 65 C3 A7 FB 8F 6E DF 10 A9 4B
0190 | C8 01 56 08 BB FC 23 41 41 5C 3A 27 FE 6E 15 82
01A0 | 15 74 EC DE D0 63 C8 C0 39 7F A0 C2 AA BA 45 BC
01B0 | EA CE 60 56 A2 CC A9 BF 87 04 6D 5B 7C 06 5D A3
01C0 | A3 8D 15 E2 5B 70 24 63 17 66 27 A2 CA 1D EB 0E
01D0 | 0D 58 CE B1 78 E2 81 4D E5 FF 89 48 E7 21 CE DE
01E0 | 77 59 BE 4C AE 8A 38 8B D5 23 95 89 7C 97 54 2A
01F0 | E0 30 B4 7F B4 5D 0E 96 9F 1E F1 5D A0 D6 EC 1C
0200 | EF 6E 1C 16 AB 59 66 59 AE FD 72 E0 00 6A 76 65
0210 | 37 B1 50 99 FF 78 75 F1 A1 A7 B5 2E D3 AA C5 61
0220 | C3 04 55 BC 8F 8E 84 C8 0C E2 DD 48 ED 9F CB CF
0230 | 2C 92 7C 65</code></pre>
0130 | 0D 75 FB 27 EA D3 22 EE BF 3B 06 1F E0 47 C7 07
0140 | 47 5E 88 38 B5 37 D0 0B 8C 1C 7E 03 4B 4D CB F7
0150 | F9 55 D9 FB DF 8B 0D B1 70 3D B2 49 75 B7 4C B3
0160 | E0 15 DF 17 49 50 97 2A 85 50 4E 61 88 99 64 39
0170 | 79 B6 8E 7C 85 55 00 22 1F 22 12 1C 86 A6 29 0D
0180 | 44 0D FC 27 27 4F 58 CD 94 C5 6B 3B AF 6B 57 48
0190 | 89 B8 9A FC 7F 6D A0 27 24 36 DC F2 9A FA 4C AE
01A0 | 98 AC 7C 21 DF 1D 04 CA 1B 15 C8 AB D7 8A 45 1B
01B0 | 14 E2 4C E5 D2 9A 59 DD 53 CD 7D 20 E5 FC E1 AE
01C0 | 1C B1 6C F9 16 AA BE 07 5B FA F3 D6 BC 10 C0 13
01D0 | E0 B7 AC 18 C3 53 F5 FE 2E 1C C9 D6 F3 42 E5 FE
01E0 | B1 75 B0 1A 62 39 F8 E8 70 88 D8 DD 7B F7 0A E0
01F0 | 7F A5 6D F8 AB 68 F6 CF E4 AE F3 FF 6E C0 EF 5A
0200 | F0 9B 63 28 D5 1B 70 9E 73 09 E0 8B F6 69 32 ED
0210 | 3D 4C E5 DF A3 B3 7E 44 54 53 D2 61 1E 20 BD BB
0220 | 0D F6 BF E7 C0 01 09 9D 0C 97 1B 2B F8 4C BD 42
0230 | 09 95 7C 65</code></pre>
<p>Payload (de)serialization:</p>
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
<table class="table">
@ -570,13 +570,13 @@ answer = BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
@ -594,13 +594,13 @@ answer = BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292
<tr>
<td>g_a</td>
<td>300, 260</td>
<td><code>FE000100BBCF36C7A84BA7DB51600016</code> <code>1E761E173703460395A1DE26B8CE2EB6</code> <code>9872E4969F8CEFC53C2BE9373F13DEE6</code> <code>F183E214CD2B98E205283DB29EEBB0E7</code> <code>320C62670CC115883E4D138075B99B1A</code> <code>275D7E015E321DAA419965C3A7FB8F6E</code> <code>DF10A94BC8015608BBFC2341415C3A27</code> <code>FE6E15821574ECDED063C8C0397FA0C2</code> <code>AABA45BCEACE6056A2CCA9BF87046D5B</code> <code>7C065DA3A38D15E25B702463176627A2</code> <code>CA1DEB0E0D58CEB178E2814DE5FF8948</code> <code>E721CEDE7759BE4CAE8A388BD5239589</code> <code>7C97542AE030B47FB45D0E969F1EF15D</code> <code>A0D6EC1CEF6E1C16AB596659AEFD72E0</code> <code>006A766537B15099FF7875F1A1A7B52E</code> <code>D3AAC561C30455BC8F8E84C80CE2DD48</code><br> <code>ED9FCBCF</code></td>
<td><code>FE0001000D75FB27EAD322EEBF3B061F</code> <code>E047C707475E8838B537D00B8C1C7E03</code> <code>4B4DCBF7F955D9FBDF8B0DB1703DB249</code> <code>75B74CB3E015DF174950972A85504E61</code> <code>8899643979B68E7C855500221F22121C</code> <code>86A6290D440DFC27274F58CD94C56B3B</code> <code>AF6B574889B89AFC7F6DA0272436DCF2</code> <code>9AFA4CAE98AC7C21DF1D04CA1B15C8AB</code> <code>D78A451B14E24CE5D29A59DD53CD7D20</code> <code>E5FCE1AE1CB16CF916AABE075BFAF3D6</code> <code>BC10C013E0B7AC18C353F5FE2E1CC9D6</code> <code>F342E5FEB175B01A6239F8E87088D8DD</code> <code>7BF70AE07FA56DF8AB68F6CFE4AEF3FF</code> <code>6EC0EF5AF09B6328D51B709E7309E08B</code> <code>F66932ED3D4CE5DFA3B37E445453D261</code> <code>1E20BDBB0DF6BFE7C001099D0C971B2B</code><br> <code>F84CBD42</code></td>
<td><code>g_a</code> diffie-hellman parameter</td>
</tr>
<tr>
<td>server_time</td>
<td>560, 4</td>
<td><code>2C927C65</code> (1702662700 in decimal)</td>
<td><code>09957C65</code> (1702663433 in decimal)</td>
<td>Server time</td>
</tr>
</tbody>
@ -609,34 +609,34 @@ answer = BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292
<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 = F2976193DFBD361EBF298C2A30514DB377651FFAAD84F2C51C1EFF62470D5B630BA44A8BDF0B43017EC088F9C03AEA86B0D5B4E2DDDA81BE6D593995943312184DB37C27940A0FB3C89AAE477C7C54AECB3CB6CF0BE9DA3CAF37EF21C3D4907D58EDFCC45528F9EA33BB4492E44C99FBF647D36003A6E7FF822C4945E37A9F10E6D711F9AAB1EFBBA4A6889A458AFAF74ECE841F8D7D0FBAE154C055D38E8BC8E1793A9C68736E24AF144BC307368660B35AC492855D22B521A426C8D117DB6F1CF96AE0E7F35A38490B0996A417C81C4A2DE3B76710140D61D8934820B70A82C38CAD6AAEF52D85EB383E2BA07F4F642CED03BEFBB1D658795722DE4D0E4CC9</code></pre>
<pre><code>b = 26342456EC9EB5E7D938483A51D3A02B674F9CECE972D384AB8E54CC456F38F448C0BD38669F9369D84314253DDBB6FFBD2E90E5DFAB6BAB5C17C36FE359AC33D4A08490E1A2498529C6935D558C82BA747016682B5A388F421FA5A4C9D74F35BFA1A8C45DFF0AC0AA4917EB36AB624C752D5E784EFCC5AE6596551F4BCAD614D3C102F226D11D5C77E3D25DC4FCC1115483553A00526FF91103D79CC7BDA38D17EDF715C3DF863A435AD4D1F767D4894761B96CE151D7E63EB64233C1DA783282749FAA7C873542EF1E6AF7378BBE1FD8A5D8588B39A3B7E4D22121D1B30A099DE65CBF17D9E9A3C55594B520D16F70C8C0377A47842718E3C4A393B20BC9D0</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 = B93CB28886BF50D0D125314DA548003F3389FF26261EA61C633291D403E99BF89CF1CCCB0B89BF62336AE5D6E0136E334B91BDBBE5FCF62604F1B15601E1B6415A24EE59BD35FE6AFCEDA11843201B0E55E393924E4D268C29C1CCF4F178651EA75B25A8CE0D5C8EB309D4FF4CA87590ABF3518522960685D876A310AF88A150974A8662BEFC93DA8DD01B31D31480A1C08A25B193A33A5F65ED9DB777ED681FF83E8A273A393D9CAF5618CE2B0D8D45D1CBC60C315D0740A3DA95C7062ED93E6B8E5C69CB559F9303F8D28D45FA616609A5E694C1A792627A7B759C160A9FFB2F87C0BC16306A4731FCABE6551C84A8A5313FBA02BA4CAC81530F1169BE3C48</code></pre>
<pre><code>g_b = 4254DB7DE02D7C30E6AF27D9F1A8A6F791D1DBE978D39DCD884335AE63599B5700EB639CDB48F77D933E79F3455D497B12B2BEB5B2317FEB648183A014D38E1F0F516EB32948F624A2457E31DCD837A8311B69BCA1AEC2D8054EE21438E2F2F714C071B94714D4515607FC5715B49983F8914D72F9555CF773CCC792421EED829FD5DF01D8C45EFB93A964D1F15DD72546E146E708173AD830B7C56EBA52D9FB42604030A9BDA981F367ABA23D8DACAC5D93EB1DA61047696BBB947C6DE68570501CAA110E8C110509AF877FCC0212AA33EEF395451725BEC15D32D3C602D744F8B19412BE90D406D76BB484F4B8B53F3E2F90DFAB5934B9713C43982F50C94E</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 B5 10 65 80 A8 53 D8 F8 A3 DF 59 C9
0010 | 34 61 01 99 13 A6 43 4C A0 99 1F 73 1C C7 CD BC
0020 | F5 61 29 27 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | B9 3C B2 88 86 BF 50 D0 D1 25 31 4D A5 48 00 3F
0040 | 33 89 FF 26 26 1E A6 1C 63 32 91 D4 03 E9 9B F8
0050 | 9C F1 CC CB 0B 89 BF 62 33 6A E5 D6 E0 13 6E 33
0060 | 4B 91 BD BB E5 FC F6 26 04 F1 B1 56 01 E1 B6 41
0070 | 5A 24 EE 59 BD 35 FE 6A FC ED A1 18 43 20 1B 0E
0080 | 55 E3 93 92 4E 4D 26 8C 29 C1 CC F4 F1 78 65 1E
0090 | A7 5B 25 A8 CE 0D 5C 8E B3 09 D4 FF 4C A8 75 90
00A0 | AB F3 51 85 22 96 06 85 D8 76 A3 10 AF 88 A1 50
00B0 | 97 4A 86 62 BE FC 93 DA 8D D0 1B 31 D3 14 80 A1
00C0 | C0 8A 25 B1 93 A3 3A 5F 65 ED 9D B7 77 ED 68 1F
00D0 | F8 3E 8A 27 3A 39 3D 9C AF 56 18 CE 2B 0D 8D 45
00E0 | D1 CB C6 0C 31 5D 07 40 A3 DA 95 C7 06 2E D9 3E
00F0 | 6B 8E 5C 69 CB 55 9F 93 03 F8 D2 8D 45 FA 61 66
0100 | 09 A5 E6 94 C1 A7 92 62 7A 7B 75 9C 16 0A 9F FB
0110 | 2F 87 C0 BC 16 30 6A 47 31 FC AB E6 55 1C 84 A8
0120 | A5 31 3F BA 02 BA 4C AC 81 53 0F 11 69 BE 3C 48</code></pre>
<pre><code>0000 | 54 B6 43 66 36 95 5F 64 53 29 BE 74 AA 26 D1 0E
0010 | EC 5F BD 2D 77 E0 62 22 2C 3E 29 5F D2 52 D2 9C
0020 | AE F9 B1 46 00 00 00 00 00 00 00 00 FE 00 01 00
0030 | 42 54 DB 7D E0 2D 7C 30 E6 AF 27 D9 F1 A8 A6 F7
0040 | 91 D1 DB E9 78 D3 9D CD 88 43 35 AE 63 59 9B 57
0050 | 00 EB 63 9C DB 48 F7 7D 93 3E 79 F3 45 5D 49 7B
0060 | 12 B2 BE B5 B2 31 7F EB 64 81 83 A0 14 D3 8E 1F
0070 | 0F 51 6E B3 29 48 F6 24 A2 45 7E 31 DC D8 37 A8
0080 | 31 1B 69 BC A1 AE C2 D8 05 4E E2 14 38 E2 F2 F7
0090 | 14 C0 71 B9 47 14 D4 51 56 07 FC 57 15 B4 99 83
00A0 | F8 91 4D 72 F9 55 5C F7 73 CC C7 92 42 1E ED 82
00B0 | 9F D5 DF 01 D8 C4 5E FB 93 A9 64 D1 F1 5D D7 25
00C0 | 46 E1 46 E7 08 17 3A D8 30 B7 C5 6E BA 52 D9 FB
00D0 | 42 60 40 30 A9 BD A9 81 F3 67 AB A2 3D 8D AC AC
00E0 | 5D 93 EB 1D A6 10 47 69 6B BB 94 7C 6D E6 85 70
00F0 | 50 1C AA 11 0E 8C 11 05 09 AF 87 7F CC 02 12 AA
0100 | 33 EE F3 95 45 17 25 BE C1 5D 32 D3 C6 02 D7 44
0110 | F8 B1 94 12 BE 90 D4 06 D7 6B B4 84 F4 B8 B5 3F
0120 | 3E 2F 90 DF AB 59 34 B9 71 3C 43 98 2F 50 C9 4E</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 = BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292
<tr>
<td>nonce</td>
<td>4, 16</td>
<td><code>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>20, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>g_b</td>
<td>36, 260</td>
<td><code>FE000100B93CB28886BF50D0D125314D</code> <code>A548003F3389FF26261EA61C633291D4</code> <code>03E99BF89CF1CCCB0B89BF62336AE5D6</code> <code>E0136E334B91BDBBE5FCF62604F1B156</code> <code>01E1B6415A24EE59BD35FE6AFCEDA118</code> <code>43201B0E55E393924E4D268C29C1CCF4</code> <code>F178651EA75B25A8CE0D5C8EB309D4FF</code> <code>4CA87590ABF3518522960685D876A310</code> <code>AF88A150974A8662BEFC93DA8DD01B31</code> <code>D31480A1C08A25B193A33A5F65ED9DB7</code> <code>77ED681FF83E8A273A393D9CAF5618CE</code> <code>2B0D8D45D1CBC60C315D0740A3DA95C7</code> <code>062ED93E6B8E5C69CB559F9303F8D28D</code> <code>45FA616609A5E694C1A792627A7B759C</code> <code>160A9FFB2F87C0BC16306A4731FCABE6</code> <code>551C84A8A5313FBA02BA4CAC81530F11</code><br> <code>69BE3C48</code></td>
<td><code>FE0001004254DB7DE02D7C30E6AF27D9</code> <code>F1A8A6F791D1DBE978D39DCD884335AE</code> <code>63599B5700EB639CDB48F77D933E79F3</code> <code>455D497B12B2BEB5B2317FEB648183A0</code> <code>14D38E1F0F516EB32948F624A2457E31</code> <code>DCD837A8311B69BCA1AEC2D8054EE214</code> <code>38E2F2F714C071B94714D4515607FC57</code> <code>15B49983F8914D72F9555CF773CCC792</code> <code>421EED829FD5DF01D8C45EFB93A964D1</code> <code>F15DD72546E146E708173AD830B7C56E</code> <code>BA52D9FB42604030A9BDA981F367ABA2</code> <code>3D8DACAC5D93EB1DA61047696BBB947C</code> <code>6DE68570501CAA110E8C110509AF877F</code> <code>CC0212AA33EEF395451725BEC15D32D3</code> <code>C602D744F8B19412BE90D406D76BB484</code> <code>F4B8B53F3E2F90DFAB5934B9713C4398</code><br> <code>2F50C94E</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 = BA0D89B5B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF561292
<!-- 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 = 54B64366B5106580A853D8F8A3DF59C93461019913A6434CA0991F731CC7CDBCF56129270000000000000000FE000100B93CB28886BF50D0D125314DA548003F3389FF26261EA61C633291D403E99BF89CF1CCCB0B89BF62336AE5D6E0136E334B91BDBBE5FCF62604F1B15601E1B6415A24EE59BD35FE6AFCEDA11843201B0E55E393924E4D268C29C1CCF4F178651EA75B25A8CE0D5C8EB309D4FF4CA87590ABF3518522960685D876A310AF88A150974A8662BEFC93DA8DD01B31D31480A1C08A25B193A33A5F65ED9DB777ED681FF83E8A273A393D9CAF5618CE2B0D8D45D1CBC60C315D0740A3DA95C7062ED93E6B8E5C69CB559F9303F8D28D45FA616609A5E694C1A792627A7B759C160A9FFB2F87C0BC16306A4731FCABE6551C84A8A5313FBA02BA4CAC81530F1169BE3C48
padding = 88A5EC7B9D1ACCDDE4D55C97
tmp_aes_key = D7DB3A5CBE76732E7C40207C176219F421EA89FC4406E027086FE19674F181B9
tmp_aes_iv = 310989E9F54E7C900B18180B9B0A370BF3FB82758A1EB8AFD94700BD607D7D78</code></pre>
<pre><code>data = 54B6436636955F645329BE74AA26D10EEC5FBD2D77E062222C3E295FD252D29CAEF9B1460000000000000000FE0001004254DB7DE02D7C30E6AF27D9F1A8A6F791D1DBE978D39DCD884335AE63599B5700EB639CDB48F77D933E79F3455D497B12B2BEB5B2317FEB648183A014D38E1F0F516EB32948F624A2457E31DCD837A8311B69BCA1AEC2D8054EE21438E2F2F714C071B94714D4515607FC5715B49983F8914D72F9555CF773CCC792421EED829FD5DF01D8C45EFB93A964D1F15DD72546E146E708173AD830B7C56EBA52D9FB42604030A9BDA981F367ABA23D8DACAC5D93EB1DA61047696BBB947C6DE68570501CAA110E8C110509AF877FCC0212AA33EEF395451725BEC15D32D3C602D744F8B19412BE90D406D76BB484F4B8B53F3E2F90DFAB5934B9713C43982F50C94E
padding = C763975D420029F04B2B6063
tmp_aes_key = EA8E6BCE75807282BBA87A24BB3ADA8642FA637C7897F6C256316BA3634FABD8
tmp_aes_iv = AD8254DDD5E3F0B4D3CA8C1778B838EF3490128FD67D33742993BD3D806079CB</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 = 9AE28210D481850559F9A8DDE26B5A951BBFEC500B8747FD460189E5BCCB5CFC5FD36130B93AD988B83DB1BECD608D466583F59E6383AC5145BBBE621EB1F61D3FF2B8EBDC9063DC945B4D6BB89989A5D2009B71A59213EACA5E4FB91F710A41913C9C76136DF9941FF52993D1E0D03F6E291DF1297EE732FFAAEA1A1A9EFFC6A2085705DFD190A44D026A7DCA50AE62EBA9AABBDA358B282824D498F549AF553CDD6AFD59A5F6CE91A684AF00EC3B630EF95FC19A0BE9E397F41CB4199B5D2ECFDE1EFAE43017A3E039A7476257EC3492380793CBACBD82CEDD5376A6FA62868A8E72C3CEEF6F103837DF8ACEEE4BCDD059EBED16C1843EEFEC5958FB74E315EB5FED87D405483EDBF74A7D30DBBF78961776593BC780033789C7529B7CEFC24748A23885B9B1B024D4C072EDC2D38C1582B8A8C3AD14F34D1FF7273970C33158F005A15465BDBEADF97BFDA2ED2F8F</code></pre>
<pre><code>encrypted_data = 2C17FE832916AAA109923B14A5EBCA49EBD49E79C03BE30B10B077D6EC2DF95A0AC08CEB3F83E9E542B4A03E01535E0AE3FADE0B4CDFBDAB453EC19858AD21F803B93D61352F71ACAC421F56A7166061BAA3AB871EFE1366FE06B7FFA8342351AD37EAE42513871C0712264FAAC605C15CA3951F85CB12142687E692263FC8C70B8193C8C937A926AFB10D46B4491C63CEBF42D9BF94ACB674007F5E7F622C6971119DA5C58D898941B529BD5E0952FB7C8C4701341B6534C796111842B710CEB0DA0A89E1B250544C4E0F8BC651CAC23EC2607CF405317E852F266E4FA5F82ADE194B4B166A235DF855BC86FC22534455010FE3B9724E6AF47C4A112BF5EDBFD418F036E788D77732263522B91A6C91EDE484FDCDC3ED5CE8D61D66BE05EDC6CBC0D1C0A9EA02345494C2DA364DDA73EA2A3F26F9B134BD1AEBB41BC108B1096BDAB39CE9DADBDA31D4225EF79CC585</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 00 FB 04 00 2C 92 7C 65
0010 | 78 01 00 00 1F 5F 04 F5 B5 10 65 80 A8 53 D8 F8
0020 | A3 DF 59 C9 34 61 01 99 13 A6 43 4C A0 99 1F 73
0030 | 1C C7 CD BC F5 61 29 27 FE 50 01 00 9A E2 82 10
0040 | D4 81 85 05 59 F9 A8 DD E2 6B 5A 95 1B BF EC 50
0050 | 0B 87 47 FD 46 01 89 E5 BC CB 5C FC 5F D3 61 30
0060 | B9 3A D9 88 B8 3D B1 BE CD 60 8D 46 65 83 F5 9E
0070 | 63 83 AC 51 45 BB BE 62 1E B1 F6 1D 3F F2 B8 EB
0080 | DC 90 63 DC 94 5B 4D 6B B8 99 89 A5 D2 00 9B 71
0090 | A5 92 13 EA CA 5E 4F B9 1F 71 0A 41 91 3C 9C 76
00A0 | 13 6D F9 94 1F F5 29 93 D1 E0 D0 3F 6E 29 1D F1
00B0 | 29 7E E7 32 FF AA EA 1A 1A 9E FF C6 A2 08 57 05
00C0 | DF D1 90 A4 4D 02 6A 7D CA 50 AE 62 EB A9 AA BB
00D0 | DA 35 8B 28 28 24 D4 98 F5 49 AF 55 3C DD 6A FD
00E0 | 59 A5 F6 CE 91 A6 84 AF 00 EC 3B 63 0E F9 5F C1
00F0 | 9A 0B E9 E3 97 F4 1C B4 19 9B 5D 2E CF DE 1E FA
0100 | E4 30 17 A3 E0 39 A7 47 62 57 EC 34 92 38 07 93
0110 | CB AC BD 82 CE DD 53 76 A6 FA 62 86 8A 8E 72 C3
0120 | CE EF 6F 10 38 37 DF 8A CE EE 4B CD D0 59 EB ED
0130 | 16 C1 84 3E EF EC 59 58 FB 74 E3 15 EB 5F ED 87
0140 | D4 05 48 3E DB F7 4A 7D 30 DB BF 78 96 17 76 59
0150 | 3B C7 80 03 37 89 C7 52 9B 7C EF C2 47 48 A2 38
0160 | 85 B9 B1 B0 24 D4 C0 72 ED C2 D3 8C 15 82 B8 A8
0170 | C3 AD 14 F3 4D 1F F7 27 39 70 C3 31 58 F0 05 A1
0180 | 54 65 BD BE AD F9 7B FD A2 ED 2F 8F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 64 41 01 00 09 95 7C 65
0010 | 78 01 00 00 1F 5F 04 F5 36 95 5F 64 53 29 BE 74
0020 | AA 26 D1 0E EC 5F BD 2D 77 E0 62 22 2C 3E 29 5F
0030 | D2 52 D2 9C AE F9 B1 46 FE 50 01 00 2C 17 FE 83
0040 | 29 16 AA A1 09 92 3B 14 A5 EB CA 49 EB D4 9E 79
0050 | C0 3B E3 0B 10 B0 77 D6 EC 2D F9 5A 0A C0 8C EB
0060 | 3F 83 E9 E5 42 B4 A0 3E 01 53 5E 0A E3 FA DE 0B
0070 | 4C DF BD AB 45 3E C1 98 58 AD 21 F8 03 B9 3D 61
0080 | 35 2F 71 AC AC 42 1F 56 A7 16 60 61 BA A3 AB 87
0090 | 1E FE 13 66 FE 06 B7 FF A8 34 23 51 AD 37 EA E4
00A0 | 25 13 87 1C 07 12 26 4F AA C6 05 C1 5C A3 95 1F
00B0 | 85 CB 12 14 26 87 E6 92 26 3F C8 C7 0B 81 93 C8
00C0 | C9 37 A9 26 AF B1 0D 46 B4 49 1C 63 CE BF 42 D9
00D0 | BF 94 AC B6 74 00 7F 5E 7F 62 2C 69 71 11 9D A5
00E0 | C5 8D 89 89 41 B5 29 BD 5E 09 52 FB 7C 8C 47 01
00F0 | 34 1B 65 34 C7 96 11 18 42 B7 10 CE B0 DA 0A 89
0100 | E1 B2 50 54 4C 4E 0F 8B C6 51 CA C2 3E C2 60 7C
0110 | F4 05 31 7E 85 2F 26 6E 4F A5 F8 2A DE 19 4B 4B
0120 | 16 6A 23 5D F8 55 BC 86 FC 22 53 44 55 01 0F E3
0130 | B9 72 4E 6A F4 7C 4A 11 2B F5 ED BF D4 18 F0 36
0140 | E7 88 D7 77 32 26 35 22 B9 1A 6C 91 ED E4 84 FD
0150 | CD C3 ED 5C E8 D6 1D 66 BE 05 ED C6 CB C0 D1 C0
0160 | A9 EA 02 34 54 94 C2 DA 36 4D DA 73 EA 2A 3F 26
0170 | F9 B1 34 BD 1A EB B4 1B C1 08 B1 09 6B DA B3 9C
0180 | E9 DA DB DA 31 D4 22 5E F7 9C C5 85</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>00FB04002C927C65</code></td>
<td><code>6441010009957C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
<tr>
<td>nonce</td>
<td>24, 16</td>
<td><code>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>encrypted_data</td>
<td>56, 340</td>
<td><code>FE5001009AE28210D481850559F9A8DD</code> <code>E26B5A951BBFEC500B8747FD460189E5</code> <code>BCCB5CFC5FD36130B93AD988B83DB1BE</code> <code>CD608D466583F59E6383AC5145BBBE62</code> <code>1EB1F61D3FF2B8EBDC9063DC945B4D6B</code> <code>B89989A5D2009B71A59213EACA5E4FB9</code> <code>1F710A41913C9C76136DF9941FF52993</code> <code>D1E0D03F6E291DF1297EE732FFAAEA1A</code> <code>1A9EFFC6A2085705DFD190A44D026A7D</code> <code>CA50AE62EBA9AABBDA358B282824D498</code> <code>F549AF553CDD6AFD59A5F6CE91A684AF</code> <code>00EC3B630EF95FC19A0BE9E397F41CB4</code> <code>199B5D2ECFDE1EFAE43017A3E039A747</code> <code>6257EC3492380793CBACBD82CEDD5376</code> <code>A6FA62868A8E72C3CEEF6F103837DF8A</code> <code>CEEE4BCDD059EBED16C1843EEFEC5958</code> <code>FB74E315EB5FED87D405483EDBF74A7D</code> <code>30DBBF78961776593BC780033789C752</code> <code>9B7CEFC24748A23885B9B1B024D4C072</code> <code>EDC2D38C1582B8A8C3AD14F34D1FF727</code> <code>3970C33158F005A15465BDBEADF97BFD</code><br> <code>A2ED2F8F</code></td>
<td><code>FE5001002C17FE832916AAA109923B14</code> <code>A5EBCA49EBD49E79C03BE30B10B077D6</code> <code>EC2DF95A0AC08CEB3F83E9E542B4A03E</code> <code>01535E0AE3FADE0B4CDFBDAB453EC198</code> <code>58AD21F803B93D61352F71ACAC421F56</code> <code>A7166061BAA3AB871EFE1366FE06B7FF</code> <code>A8342351AD37EAE42513871C0712264F</code> <code>AAC605C15CA3951F85CB12142687E692</code> <code>263FC8C70B8193C8C937A926AFB10D46</code> <code>B4491C63CEBF42D9BF94ACB674007F5E</code> <code>7F622C6971119DA5C58D898941B529BD</code> <code>5E0952FB7C8C4701341B6534C7961118</code> <code>42B710CEB0DA0A89E1B250544C4E0F8B</code> <code>C651CAC23EC2607CF405317E852F266E</code> <code>4FA5F82ADE194B4B166A235DF855BC86</code> <code>FC22534455010FE3B9724E6AF47C4A11</code> <code>2BF5EDBFD418F036E788D77732263522</code> <code>B91A6C91EDE484FDCDC3ED5CE8D61D66</code> <code>BE05EDC6CBC0D1C0A9EA02345494C2DA</code> <code>364DDA73EA2A3F26F9B134BD1AEBB41B</code> <code>C108B1096BDAB39CE9DADBDA31D4225E</code><br> <code>F79CC585</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 = 239A20B68B5BCF933EC6CFBB35AD2B5EE54CA43951B6956CCCF49B0D7127E28785979FBA39D37F80AD00FA609DAAECB5CB06E6349275ECF665656FA96896E418507B9EA201FF5857EC8A502D87E89D68AC63DAAA2F83509E24E305DF98E4638BF3A42A620C304409CACF93BB3039C8049A2F4AD71800DD76F807D6C3C1C518E2D1F29597ED11458F2D3491F67BA9B9C2130C92F7073F3B50E3DDAA0347B76B4681A16E26FF47804CD62C81789493A811A3A6146B9687B2871C1320D9CD1541BD6A52D5FB795CDBC054D496E119120552096D214C1037C4DB9443FEFE7E13350A584454F8097C1119BF7459E5E65A1226F8C99D49CD7B80C0638840A8EE54B675</code></pre>
<pre><code>auth_key = 9E91C8D6290855BFBCB09E1284574FEC478668686B734B44927C11F9EA86604EDE079F292F72EBA198FC5A7DE121AA39D627246F8701A92813E4CA63F19B9A30FEC268D125EF26C8A1D90D8B71C4AFF5AE61461D5C658673D79FCEC2A46B9DCCCDA10C54C30CF17996E819D8AEA71EE24C2D39E55F05DE686AAB41C0CE36CCA1B927354830EDA884E52EF5DC686E7630CC474F3F9AD43FD3DA71179E49545637AB9367A2D799A528F572D42520598C374ADC3821FC466D59A5C101BCC09725822E0F1498452E0044C75FFE9E743AD3378B6674E061DC129ECCF762FF976B5F0BB2CA92A948158D8A6959CC30A5B3E94D78E59FCD6A151E7586A7BBB300755141</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 70 4C 06 2D 92 7C 65
0010 | 40 00 00 00 34 F7 CB 3B B5 10 65 80 A8 53 D8 F8
0020 | A3 DF 59 C9 34 61 01 99 13 A6 43 4C A0 99 1F 73
0030 | 1C C7 CD BC F5 61 29 27 EE D6 27 56 C4 2F 66 7A
0040 | 37 1D 1F F7 18 A6 79 0F</code></pre>
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 CC B2 53 09 95 7C 65
0010 | 54 00 00 00 34 F7 CB 3B 36 95 5F 64 53 29 BE 74
0020 | AA 26 D1 0E EC 5F BD 2D 77 E0 62 22 2C 3E 29 5F
0030 | D2 52 D2 9C AE F9 B1 46 7B F6 24 CF 81 E1 F5 10
0040 | BF 17 89 8E 53 4E 2F B8</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>01704C062D927C65</code></td>
<td><code>01CCB25309957C65</code></td>
<td>Message ID generated as specified <a href="/mtproto/description#message-identifier-msg-id">here »</a> (unixtime() &lt;&lt; 32) + (N*4)</td>
</tr>
<tr>
<td>message_length</td>
<td>16, 4</td>
<td><code>40000000</code> (64 in decimal)</td>
<td><code>54000000</code> (84 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>B5106580A853D8F8A3DF59C934610199</code></td>
<td><code>36955F645329BE74AA26D10EEC5FBD2D</code></td>
<td>Value generated by client in Step 1</td>
</tr>
<tr>
<td>server_nonce</td>
<td>40, 16</td>
<td><code>13A6434CA0991F731CC7CDBCF5612927</code></td>
<td><code>77E062222C3E295FD252D29CAEF9B146</code></td>
<td>Value received from server in Step 2</td>
</tr>
<tr>
<td>new_nonce_hash1</td>
<td>56, 16</td>
<td><code>EED62756C42F667A371D1FF718A6790F</code></td>
<td><code>7BF624CF81E1F510BF17898E534E2FB8</code></td>
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
</tr>
</tbody>

View file

@ -8,24 +8,16 @@
Constructor
Description
premium.boostsStatus
 
Methods
Method
Description
premium.getBoostsStatus
 ">
Contains info about the current boost status of a peer.
Methods…">
<meta property="og:title" content="Premium.BoostsStatus">
<meta property="og:image" content="">
<meta property="og:description" content="Constructors
Constructor
Description
premium.boostsStatus
 
Methods
Method
Description
premium.getBoostsStatus
 ">
Contains info about the current boost status of a peer.
Methods…">
<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">
@ -88,7 +80,7 @@ premium.getBoostsStatus
<tbody>
<tr>
<td><a href="/constructor/premium.boostsStatus">premium.boostsStatus</a></td>
<td> </td>
<td>Contains info about the current <a href="/api/boost">boost status</a> of a peer.</td>
</tr>
</tbody>
</table>
@ -103,7 +95,7 @@ premium.getBoostsStatus
<tbody>
<tr>
<td><a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a></td>
<td> </td>
<td>Gets the current <a href="/api/boost">boost status</a> of a peer.</td>
</tr>
</tbody>
</table></div>