diff --git a/data/web/corefork.telegram.org/api/boost.html b/data/web/corefork.telegram.org/api/boost.html index 9bf421f836..e6a1068984 100644 --- a/data/web/corefork.telegram.org/api/boost.html +++ b/data/web/corefork.telegram.org/api/boost.html @@ -2,12 +2,12 @@ - Channel boosts + Channel and supergroup boosts - - + + - + @@ -39,13 +39,13 @@
- -

Channel boosts

+ +

Channel and supergroup boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

-

Channels level up as they gain more boosts – and for each level, they gain additional features.

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

+

Channels and supergroups level up as they gain more boosts – and for each level, they gain additional features.

Additionally, channel admins may gain even more boosts by starting giveaways ».

The maximum possible boost level for a channel is specified in the boosts_channel_level_max config key.

Schema:

@@ -73,17 +73,17 @@ premium.getUserBoosts#39854d1f peer:InputPeer user_id:InputUser = premium.BoostsList; premium.getBoostsList#60f67660 flags:# gifts:flags.0?true peer:InputPeer offset:string limit:int = premium.BoostsList; -

Each user has a certain number of boost slots that can be assigned to channels: the precise number depends on whether they bought or were gifted a Premium subscription, and can be fetched using premium.getMyBoosts, along with info about the channels currently occupying each slot, if any.

+

Each user has a certain number of boost slots that can be assigned to channels and supergroups: the precise number depends on whether they bought or were gifted a Premium subscription, and can be fetched using premium.getMyBoosts, along with info about the channels and supergroups currently occupying each slot, if any.

Gifting a Telegram Premium subscription to another user will create boosts_per_sent_gift new boost slots for us, and one boost slot for the destination user.

-

Use premium.applyBoost to assign some of your boost slots to a channel.

+

Use premium.applyBoost to assign some of your boost slots to a channel or supergroup.

A PREMIUM_ACCOUNT_REQUIRED error will be returned if the current account does not have a Telegram Premium subscription.
-A BOOST_NOT_MODIFIED RPC error will be returned when calling any of the two methods if the user is already boosting the specified channel with the same slots.

-

After assigning a slot a channel, the user may not change the boosted channel for that slot for a certain cooldown period, specified in the myBoost.cooldown_until_date field: if the cooldown period isn't over yet, the method will return a 420 FLOOD_WAIT_X error, indicating the number of seconds left before a different channel can be boosted.

-

Users may also invoke premium.getBoostsStatus, to get the current boost status of a channel as a premium.boostsStatus constructor, check out the constructor page for more info.

-

Channel administrators may invoke premium.getBoostsList to fetch the list of users currently boosting the channel, and premium.getUserBoosts to get info about the boosts sent to a channel by a specific user.

+A BOOST_NOT_MODIFIED RPC error will be returned when calling any of the two methods if the user is already boosting the specified channel or supergroup with the same slots.

+

After assigning a slot a channel or supergroup, the user may not change the boosted channel or supergroup for that slot for a certain cooldown period, specified in the myBoost.cooldown_until_date field: if the cooldown period isn't over yet, the method will return a 420 FLOOD_WAIT_X error, indicating the number of seconds left before a different channel or supergroup can be boosted.

+

Users may also invoke premium.getBoostsStatus, to get the current boost status of a channel or supergroup as a premium.boostsStatus constructor, check out the constructor page for more info.

+

Channel or supergroup administrators may invoke premium.getBoostsList to fetch the list of users currently boosting the channel or supergroup, and premium.getUserBoosts to get info about the boosts sent to a channel or supergroup by a specific user.

Features

-

Posting stories as a channel

-

With each boost, channels can post 1 additional story per day to their subscribers' story feeds.

+

Posting stories as a channel or supergroup

+

With each boost, channels and supergroups can post 1 additional story per day to their subscribers' story feeds.

inputPeerChannel#27bcbbfc channel_id:long access_hash:long = InputPeer;
 
 messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats;
@@ -92,7 +92,7 @@ A BOOST_NOT_MODIFIED RPC error will be returned when calling any of
 
 stories.getChatsToSend#a56a8b60 = messages.Chats;

Everything works exactly the same as when posting stories as a user, with the only difference that clients should pass the appropriate inputPeerChannel instead of inputPeerSelf to stories.canSendStory, stories.sendStory and all the other story methods, see the main documentation » for more info.

-

Use stories.getChatsToSend to obtain a list of channels where the user can post stories; stories.canSendStory must still be used before uploading a story to make sure no other limit was reached, as described in the main documentation ».

+

Use stories.getChatsToSend to obtain a list of channels or supergroups where the user can post stories; stories.canSendStory must still be used before uploading a story to make sure no other limit was reached, as described in the main documentation ».

Changing message accent color

After reaching at least the boost level specified in the channel_min_level field of the help.peerColorOption constructor for the chosen palette, channels gain the ability to change their message accent palette ».

Changing message accent emoji

diff --git a/data/web/corefork.telegram.org/constructor/boost.html b/data/web/corefork.telegram.org/constructor/boost.html index 02ba352569..0795b89660 100644 --- a/data/web/corefork.telegram.org/constructor/boost.html +++ b/data/web/corefork.telegram.org/constructor/boost.html @@ -127,11 +127,11 @@

Boost

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

payments.applyGiftCode

Apply a Telegram Premium giftcode »

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/constructor/channel.html b/data/web/corefork.telegram.org/constructor/channel.html index 4d8be19d5d..cd3b63714a 100644 --- a/data/web/corefork.telegram.org/constructor/channel.html +++ b/data/web/corefork.telegram.org/constructor/channel.html @@ -305,8 +305,8 @@

Telegram users and channels can change the accent color and background pattern of their profile page and their messages!

Emoji status

Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html b/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html index f5fb710417..44acc0736b 100644 --- a/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html +++ b/data/web/corefork.telegram.org/constructor/globalPrivacySettings.html @@ -114,7 +114,7 @@

If a user enables their new_noncontact_peers_require_premium global privacy setting, represented in userFull.contact_require_premium, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.

To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the userFull or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.

This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a Premium subscription.

-

Note that this method should only be invoked if we don't have a Premium subscription, for users whose full info (userFull + message history information + contact information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual updates.

+

Note that this method should only be invoked if we don't have a Premium subscription, only for users whose full info (userFull + message history information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual updates.

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

diff --git a/data/web/corefork.telegram.org/constructor/help.peerColorOption.html b/data/web/corefork.telegram.org/constructor/help.peerColorOption.html index 664ba646fd..8a684623af 100644 --- a/data/web/corefork.telegram.org/constructor/help.peerColorOption.html +++ b/data/web/corefork.telegram.org/constructor/help.peerColorOption.html @@ -106,8 +106,8 @@

Type

help.PeerColorOption

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Accent colors

Telegram users and channels can change the accent color and background pattern of their profile page and their messages!

diff --git a/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html b/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html index 29898c6725..4b639d655d 100644 --- a/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html @@ -84,13 +84,13 @@

inputStorePaymentPremiumGiveaway

Used to pay for a giveaway, see here » for more info.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

inputStorePaymentPremiumGiftCode

Used to gift Telegram Premium subscriptions only to some specific subscribers of a channel or to some of our contacts, see here » for more info on giveaways and gifts.

payments.getPremiumGiftCodeOptions

Obtain a list of Telegram Premium giveaway/gift code » options.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html index 6f88169eb6..843ddfb6f0 100644 --- a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html @@ -98,10 +98,10 @@

Related pages

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

Bot Payments API

diff --git a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html index 2b192cb1d6..2b8efc6f8c 100644 --- a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html +++ b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html @@ -128,10 +128,10 @@

Related pages

messageMediaGiveawayResults

A giveaway with public winners has finished, this constructor contains info about the winners.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

Client configuration

The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.

Bot Payments API

diff --git a/data/web/corefork.telegram.org/constructor/message.html b/data/web/corefork.telegram.org/constructor/message.html index b7d09bcbc5..a2510340ed 100644 --- a/data/web/corefork.telegram.org/constructor/message.html +++ b/data/web/corefork.telegram.org/constructor/message.html @@ -149,7 +149,7 @@ from_boosts_applied flags.29?int -  +Supergroups only, contains the number of boosts this user has given the current supergroup.
Only present for incoming messages from non-anonymous supergroup members that have boosted the supergroup.
Note that this counter should be locally updated for non-anonymous outgoing messages, according to the current value of channelFull.boosts_applied, to ensure the value is correct even for messages sent by the current user before a supergroup was boosted (or after a boost has expired or the number of boosts has changed); do not update this value for incoming messages from other users, even if their boosts have changed. peer_id @@ -277,6 +277,10 @@

Telegram allows scheduling messages

Pinned messages

Telegram allows pinning multiple messages on top of a specific chat.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

+

channelFull

+

Full info about a channel, supergroup or gigagroup.

Saved messages

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.

inputPeerSelf

diff --git a/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html b/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html index 0e13251678..4d78e1b634 100644 --- a/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html @@ -122,11 +122,11 @@

MessageAction

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

Deep links

Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

Bot Payments API

diff --git a/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html b/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html index ea6b909eda..8058ae817e 100644 --- a/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html +++ b/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html @@ -62,7 +62,7 @@

MessageAction

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/constructor/messageActionGiveawayResults.html b/data/web/corefork.telegram.org/constructor/messageActionGiveawayResults.html index 3983149d80..20a9d1ef57 100644 --- a/data/web/corefork.telegram.org/constructor/messageActionGiveawayResults.html +++ b/data/web/corefork.telegram.org/constructor/messageActionGiveawayResults.html @@ -82,7 +82,7 @@

MessageAction

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html b/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html index a0483d9c32..ea93840efd 100644 --- a/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html +++ b/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html @@ -121,7 +121,7 @@

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html b/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html index 52b190baac..81963ea5ac 100644 --- a/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html +++ b/data/web/corefork.telegram.org/constructor/messageMediaGiveawayResults.html @@ -131,12 +131,12 @@

Type

MessageMedia

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/constructor/myBoost.html b/data/web/corefork.telegram.org/constructor/myBoost.html index 3b5059523d..b29b8e1124 100644 --- a/data/web/corefork.telegram.org/constructor/myBoost.html +++ b/data/web/corefork.telegram.org/constructor/myBoost.html @@ -101,8 +101,8 @@

Type

MyBoost

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/constructor/payments.checkedGiftCode.html b/data/web/corefork.telegram.org/constructor/payments.checkedGiftCode.html index f7679c7e9f..cc700d4d24 100644 --- a/data/web/corefork.telegram.org/constructor/payments.checkedGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/payments.checkedGiftCode.html @@ -122,7 +122,7 @@

payments.CheckedGiftCode

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

Deep links

diff --git a/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html b/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html index 20423a3a25..49345850a8 100644 --- a/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html +++ b/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html @@ -108,7 +108,7 @@

payments.GiveawayInfo

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

messageMediaGiveaway

Contains info about a giveaway, see here » for more info.

diff --git a/data/web/corefork.telegram.org/constructor/payments.giveawayInfoResults.html b/data/web/corefork.telegram.org/constructor/payments.giveawayInfoResults.html index 5b57dc44d5..f180bac0e0 100644 --- a/data/web/corefork.telegram.org/constructor/payments.giveawayInfoResults.html +++ b/data/web/corefork.telegram.org/constructor/payments.giveawayInfoResults.html @@ -114,7 +114,7 @@

Deep links

Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/constructor/premium.boostsList.html b/data/web/corefork.telegram.org/constructor/premium.boostsList.html index 1fedf1d528..f9318ed9f5 100644 --- a/data/web/corefork.telegram.org/constructor/premium.boostsList.html +++ b/data/web/corefork.telegram.org/constructor/premium.boostsList.html @@ -96,8 +96,8 @@

Type

premium.BoostsList

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Pagination in the API

How to fetch results from large lists of objects.

diff --git a/data/web/corefork.telegram.org/constructor/premium.boostsStatus.html b/data/web/corefork.telegram.org/constructor/premium.boostsStatus.html index c747aaaaad..27265aa2a6 100644 --- a/data/web/corefork.telegram.org/constructor/premium.boostsStatus.html +++ b/data/web/corefork.telegram.org/constructor/premium.boostsStatus.html @@ -127,11 +127,11 @@

premium.BoostsStatus

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

Deep links

Telegram clients must handle special tg:// and t.me deep links encountered in messages, link entities and in other apps by registering OS handlers.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/constructor/premium.myBoosts.html b/data/web/corefork.telegram.org/constructor/premium.myBoosts.html index 78a65673f1..021e29cca4 100644 --- a/data/web/corefork.telegram.org/constructor/premium.myBoosts.html +++ b/data/web/corefork.telegram.org/constructor/premium.myBoosts.html @@ -86,8 +86,8 @@

Type

premium.MyBoosts

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html b/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html index e2fc14f104..2a33044e32 100644 --- a/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html +++ b/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html @@ -110,7 +110,7 @@

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

Bot Payments API

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/constructor/prepaidGiveaway.html b/data/web/corefork.telegram.org/constructor/prepaidGiveaway.html index ac17635935..d7eca20d7e 100644 --- a/data/web/corefork.telegram.org/constructor/prepaidGiveaway.html +++ b/data/web/corefork.telegram.org/constructor/prepaidGiveaway.html @@ -94,7 +94,7 @@

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/constructor/updateBotChatBoost.html b/data/web/corefork.telegram.org/constructor/updateBotChatBoost.html index 7af93f2a74..a8c3184dec 100644 --- a/data/web/corefork.telegram.org/constructor/updateBotChatBoost.html +++ b/data/web/corefork.telegram.org/constructor/updateBotChatBoost.html @@ -88,8 +88,8 @@

Related pages

Working with Updates

How to subscribe to updates and handle them properly.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/constructor/userFull.html b/data/web/corefork.telegram.org/constructor/userFull.html index f132238953..6b8c5d838f 100644 --- a/data/web/corefork.telegram.org/constructor/userFull.html +++ b/data/web/corefork.telegram.org/constructor/userFull.html @@ -307,7 +307,7 @@

If a user enables their new_noncontact_peers_require_premium global privacy setting, represented in userFull.contact_require_premium, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.

To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the userFull or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.

This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a Premium subscription.

-

Note that this method should only be invoked if we don't have a Premium subscription, for users whose full info (userFull + message history information + contact information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual updates.

+

Note that this method should only be invoked if we don't have a Premium subscription, only for users whose full info (userFull + message history information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual updates.

account.setGlobalPrivacySettings

Set global privacy settings

messages.getOutboxReadDate

diff --git a/data/web/corefork.telegram.org/method/channels.updateColor.html b/data/web/corefork.telegram.org/method/channels.updateColor.html index 60376eb324..32814aca11 100644 --- a/data/web/corefork.telegram.org/method/channels.updateColor.html +++ b/data/web/corefork.telegram.org/method/channels.updateColor.html @@ -128,8 +128,8 @@

Related pages

Accent colors

Telegram users and channels can change the accent color and background pattern of their profile page and their messages!

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/method/payments.applyGiftCode.html b/data/web/corefork.telegram.org/method/payments.applyGiftCode.html index 94ba7f606e..97b205d820 100644 --- a/data/web/corefork.telegram.org/method/payments.applyGiftCode.html +++ b/data/web/corefork.telegram.org/method/payments.applyGiftCode.html @@ -112,7 +112,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/method/payments.checkGiftCode.html b/data/web/corefork.telegram.org/method/payments.checkGiftCode.html index e3578b1a6f..bbc54de748 100644 --- a/data/web/corefork.telegram.org/method/payments.checkGiftCode.html +++ b/data/web/corefork.telegram.org/method/payments.checkGiftCode.html @@ -101,7 +101,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/method/payments.getGiveawayInfo.html b/data/web/corefork.telegram.org/method/payments.getGiveawayInfo.html index 6fcf3c3a17..f78c869a7f 100644 --- a/data/web/corefork.telegram.org/method/payments.getGiveawayInfo.html +++ b/data/web/corefork.telegram.org/method/payments.getGiveawayInfo.html @@ -104,7 +104,7 @@

messageActionGiveawayLaunch

A giveaway was started.

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/method/payments.getPremiumGiftCodeOptions.html b/data/web/corefork.telegram.org/method/payments.getPremiumGiftCodeOptions.html index 3fef5a3696..4d38361c9c 100644 --- a/data/web/corefork.telegram.org/method/payments.getPremiumGiftCodeOptions.html +++ b/data/web/corefork.telegram.org/method/payments.getPremiumGiftCodeOptions.html @@ -83,7 +83,7 @@

Vector<PremiumGiftCodeOption>

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/method/payments.launchPrepaidGiveaway.html b/data/web/corefork.telegram.org/method/payments.launchPrepaidGiveaway.html index 566b8b7fc5..907db2e042 100644 --- a/data/web/corefork.telegram.org/method/payments.launchPrepaidGiveaway.html +++ b/data/web/corefork.telegram.org/method/payments.launchPrepaidGiveaway.html @@ -112,7 +112,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/method/premium.applyBoost.html b/data/web/corefork.telegram.org/method/premium.applyBoost.html index 13436b855e..1b7cbf9874 100644 --- a/data/web/corefork.telegram.org/method/premium.applyBoost.html +++ b/data/web/corefork.telegram.org/method/premium.applyBoost.html @@ -115,8 +115,8 @@

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/method/premium.getBoostsList.html b/data/web/corefork.telegram.org/method/premium.getBoostsList.html index 3d527209d6..ffdbd6eca6 100644 --- a/data/web/corefork.telegram.org/method/premium.getBoostsList.html +++ b/data/web/corefork.telegram.org/method/premium.getBoostsList.html @@ -121,7 +121,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

premium.boostsList

List of boosts that were applied to a peer by multiple users.

Pagination in the API

diff --git a/data/web/corefork.telegram.org/method/premium.getBoostsStatus.html b/data/web/corefork.telegram.org/method/premium.getBoostsStatus.html index bb93147972..52f156a72b 100644 --- a/data/web/corefork.telegram.org/method/premium.getBoostsStatus.html +++ b/data/web/corefork.telegram.org/method/premium.getBoostsStatus.html @@ -95,8 +95,8 @@

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/method/premium.getMyBoosts.html b/data/web/corefork.telegram.org/method/premium.getMyBoosts.html index add6ee6b99..27ce3d931a 100644 --- a/data/web/corefork.telegram.org/method/premium.getMyBoosts.html +++ b/data/web/corefork.telegram.org/method/premium.getMyBoosts.html @@ -63,8 +63,8 @@

Result

premium.MyBoosts

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/method/stories.canSendStory.html b/data/web/corefork.telegram.org/method/stories.canSendStory.html index 7f30530b2f..ed6e4fefff 100644 --- a/data/web/corefork.telegram.org/method/stories.canSendStory.html +++ b/data/web/corefork.telegram.org/method/stories.canSendStory.html @@ -126,8 +126,8 @@

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Client configuration

The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.

Telegram Premium

diff --git a/data/web/corefork.telegram.org/method/stories.sendStory.html b/data/web/corefork.telegram.org/method/stories.sendStory.html index 3f647b7dfd..cdc424d317 100644 --- a/data/web/corefork.telegram.org/method/stories.sendStory.html +++ b/data/web/corefork.telegram.org/method/stories.sendStory.html @@ -224,8 +224,8 @@

The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.

Privacy

Telegram allows users to specify granular privacy settings, choosing which users can or can't interact with them in certain ways.

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

Telegram Premium

Telegram Premium is an optional subscription service that unlocks additional exclusive client-side and API-side features, while helping support the development of the app.

diff --git a/data/web/corefork.telegram.org/methods.html b/data/web/corefork.telegram.org/methods.html index 7cfced5286..5794deb5c0 100644 --- a/data/web/corefork.telegram.org/methods.html +++ b/data/web/corefork.telegram.org/methods.html @@ -3178,7 +3178,7 @@ Look for updates of telegram's terms of service…"> users.getIsPremiumRequiredToContact -Check whether we can write to the specified user (non-Premium users only).

If a user enables their new_noncontact_peers_require_premium global privacy setting, represented in userFull.contact_require_premium, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.

To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the userFull or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.

This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a Premium subscription.

Note that this method should only be invoked if we don't have a Premium subscription, for users whose full info (userFull + message history information + contact information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual updates. +Check whether we can write to the specified user (non-Premium users only).

If a user enables their new_noncontact_peers_require_premium global privacy setting, represented in userFull.contact_require_premium, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.

To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the userFull or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.

This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a Premium subscription.

Note that this method should only be invoked if we don't have a Premium subscription, only for users whose full info (userFull + message history information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual updates. channels.setBoostsToUnblockRestrictions diff --git a/data/web/corefork.telegram.org/mtproto/samples-auth_key.html b/data/web/corefork.telegram.org/mtproto/samples-auth_key.html index cc25aad2aa..d4721b1462 100644 --- a/data/web/corefork.telegram.org/mtproto/samples-auth_key.html +++ b/data/web/corefork.telegram.org/mtproto/samples-auth_key.html @@ -53,9 +53,9 @@
1) Client sends query to server

Sent payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 14 E9 05 00 50 BA 79 66
-0010 | 14 00 00 00 F1 8E 7E BE 89 66 1B 73 7A 31 36 75
-0020 | 4D C8 B0 EE C3 20 B4 5A
+
0000 | 00 00 00 00 00 00 00 00 3C B9 0E 00 73 22 7B 66
+0010 | 14 00 00 00 F1 8E 7E BE C3 C8 F6 BE 0E 4F 8A 08
+0020 | AE F2 D4 4C 20 7A CE 47

Payload (de)serialization:

req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
@@ -77,7 +77,7 @@ - + @@ -95,7 +95,7 @@ - + @@ -104,11 +104,11 @@
2) Server sends response of the form

Received payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 01 D0 71 60 50 BA 79 66
-0010 | A4 00 00 00 63 24 16 05 89 66 1B 73 7A 31 36 75
-0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
-0030 | A0 A5 21 5A 41 BD 8B 78 08 1C 7D 70 DB 91 B6 E5
-0040 | BD 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
+
0000 | 00 00 00 00 00 00 00 00 01 E0 CC 03 74 22 7B 66
+0010 | A4 00 00 00 63 24 16 05 C3 C8 F6 BE 0E 4F 8A 08
+0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
+0030 | FC 98 9D 20 BA 91 C0 BC 08 22 1F 49 3A A2 24 37
+0040 | 3F 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

Payload (de)serialization:

@@ -132,7 +132,7 @@
- + @@ -150,19 +150,19 @@ - + - + - + @@ -208,22 +208,22 @@

Proof of work

3) Client decomposes pq into prime factors such that p < q.
-
pq = 2052921093495645629
-

Decompose into 2 prime cofactors p < q: 2052921093495645629 = 1354718059 * 1515386231

-
p = 1354718059
-q = 1515386231
+
pq = 2458764437744793407
+

Decompose into 2 prime cofactors p < q: 2458764437744793407 = 1381929973 * 1779225059

+
p = 1381929973
+q = 1779225059

Presenting proof of work; Server authentication

4) encrypted_data payload generation

First of all, generate an encrypted_data payload as follows:

Generated payload (excluding transport headers/trailers):

-
0000 | 95 5F F5 A9 08 1C 7D 70 DB 91 B6 E5 BD 00 00 00
-0010 | 04 50 BF 5B 6B 00 00 00 04 5A 52 F5 77 00 00 00
-0020 | 89 66 1B 73 7A 31 36 75 4D C8 B0 EE C3 20 B4 5A
-0030 | 5B 48 21 9D 38 80 3F AC A0 A5 21 5A 41 BD 8B 78
-0040 | 0A F0 B6 F6 4E 8F E8 F2 D6 0F A2 BB B5 E8 F2 FE
-0050 | 14 F5 D1 91 D7 FA 92 F2 D4 B2 3E 28 E0 01 7A B8
+
0000 | 95 5F F5 A9 08 22 1F 49 3A A2 24 37 3F 00 00 00
+0010 | 04 52 5E 93 F5 00 00 00 04 6A 0C D1 E3 00 00 00
+0020 | C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C 20 7A CE 47
+0030 | A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20 BA 91 C0 BC
+0040 | FE 6A AC 3F 30 6D 99 D5 8E 30 76 FD 35 77 65 25
+0050 | 54 18 F8 F9 24 5C EB 17 EC 81 B1 67 25 0F 1D F9
 0060 | 02 00 00 00

Payload (de)serialization:

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;
@@ -246,37 +246,37 @@ q = 1515386231
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1515386231

The serialization of P_Q_inner_data produces data, which is used to generate encrypted_data as specified in step 4.1.
These are the inputs to the algorithm specified in step 4.1:

-
data = 955FF5A9081C7D70DB91B6E5BD0000000450BF5B6B000000045A52F57700000089661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B780AF0B6F64E8FE8F2D60FA2BBB5E8F2FE14F5D191D7FA92F2D4B23E28E0017AB802000000
-random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D470AAB043B0257CC87F2CE6E41DF9CB1462D77EBBF0DEE2902F4C8D15ED2B16E74CB09C279824B7F3E0F09B502C44A103F175F2E433E6BD283D315FDB327CD5A
+
data = 955FF5A908221F493AA224373F00000004525E93F5000000046A0CD1E3000000C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BCFE6AAC3F306D99D58E3076FD357765255418F8F9245CEB17EC81B167250F1DF902000000
+random_padding_bytes = FFD48E7D4E05C7D4BEC59DBF341BF5DE797CD466DD7ED015A34B7B08E8DF17901EB0FD196138882D9B68A0643C6F740E6B29971E72983C317A917547E7AF7DBC104F8B90AF2E9FDFFAED06AA5FCCF52779F12FEFCC678ED9B0EAD54C

And this is the output:

-
encrypted_data = 4F980F1D38DBF00E09661EB020E3D27B7E45FBEDB51AC1EBC25E7E805E1445A8443773CEC2D18ECE2F36A2F527475A0B0F19F6899BA1B63E33AE4BF039465C9B04965954EB2B0C6D42F36A9D7D134BB0A3B2E82E516A6585E3FD6BCE0931A2214ECFDB88B92049FE2CC3A935263BAA426A0F49A8FB178ACD76E7733F1F7C8FE599461D287CE9E90D6972D1B1012ED3ED0BA5D8656D132930651982882B1E81D26496F716C388FED4E5459C8DFBC68396C66E21D472B5DF6E0173222D81EBBF19FF5B3979F1B2C24061FBADF90EAE632437F17EC8526E45AFEE11A9D9FCEABDDFCCA928F36D75F25831E60E2A887C08530C9F206FB9FC72FF6D3D76FC8E18C60E
+
encrypted_data = B9414995450EB67A3067A17A8662ABCF4E40BFEFD972EDA822FF2DE36B9B04AFACA0FB5D1F95C2A55BAB48240811689C99671600428A754734A552FF7D015004D677DFF8855EA0FBBCB13FB7E98ADE47BEC0FF81081913AEA521ADFD6FD2FA1DF394D3E4E377A77CCC4F75EDA14C257BD56DC0978893BA5573350A3FA2996436B8DDBCC210D4BB212C73E43D084C13B85AACB786A2C2A2252494760AF29504CC7BEF2E21244BA7D8D998508294E92F98E3925E4C77E53989DFDA7B97DE1D4A3266000BD004766BC158946A207B3A381195764DEC4D102AA385E08BD225A6F4EF2B48F513AD8115F2AB6343321962247A4B85C37622479BF6140D3AB9E5872FEC

The length of the final string is 256 bytes.

5) Send req_DH_params query with generated encrypted_data

Sent payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 34 E4 0B 00 50 BA 79 66
-0010 | 40 01 00 00 BE E4 12 D7 89 66 1B 73 7A 31 36 75
-0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
-0030 | A0 A5 21 5A 41 BD 8B 78 04 50 BF 5B 6B 00 00 00
-0040 | 04 5A 52 F5 77 00 00 00 85 FD 64 DE 85 1D 9D D0
-0050 | FE 00 01 00 4F 98 0F 1D 38 DB F0 0E 09 66 1E B0
-0060 | 20 E3 D2 7B 7E 45 FB ED B5 1A C1 EB C2 5E 7E 80
-0070 | 5E 14 45 A8 44 37 73 CE C2 D1 8E CE 2F 36 A2 F5
-0080 | 27 47 5A 0B 0F 19 F6 89 9B A1 B6 3E 33 AE 4B F0
-0090 | 39 46 5C 9B 04 96 59 54 EB 2B 0C 6D 42 F3 6A 9D
-00A0 | 7D 13 4B B0 A3 B2 E8 2E 51 6A 65 85 E3 FD 6B CE
-00B0 | 09 31 A2 21 4E CF DB 88 B9 20 49 FE 2C C3 A9 35
-00C0 | 26 3B AA 42 6A 0F 49 A8 FB 17 8A CD 76 E7 73 3F
-00D0 | 1F 7C 8F E5 99 46 1D 28 7C E9 E9 0D 69 72 D1 B1
-00E0 | 01 2E D3 ED 0B A5 D8 65 6D 13 29 30 65 19 82 88
-00F0 | 2B 1E 81 D2 64 96 F7 16 C3 88 FE D4 E5 45 9C 8D
-0100 | FB C6 83 96 C6 6E 21 D4 72 B5 DF 6E 01 73 22 2D
-0110 | 81 EB BF 19 FF 5B 39 79 F1 B2 C2 40 61 FB AD F9
-0120 | 0E AE 63 24 37 F1 7E C8 52 6E 45 AF EE 11 A9 D9
-0130 | FC EA BD DF CC A9 28 F3 6D 75 F2 58 31 E6 0E 2A
-0140 | 88 7C 08 53 0C 9F 20 6F B9 FC 72 FF 6D 3D 76 FC
-0150 | 8E 18 C6 0E
+
0000 | 00 00 00 00 00 00 00 00 48 3B 01 00 74 22 7B 66
+0010 | 40 01 00 00 BE E4 12 D7 C3 C8 F6 BE 0E 4F 8A 08
+0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
+0030 | FC 98 9D 20 BA 91 C0 BC 04 52 5E 93 F5 00 00 00
+0040 | 04 6A 0C D1 E3 00 00 00 85 FD 64 DE 85 1D 9D D0
+0050 | FE 00 01 00 B9 41 49 95 45 0E B6 7A 30 67 A1 7A
+0060 | 86 62 AB CF 4E 40 BF EF D9 72 ED A8 22 FF 2D E3
+0070 | 6B 9B 04 AF AC A0 FB 5D 1F 95 C2 A5 5B AB 48 24
+0080 | 08 11 68 9C 99 67 16 00 42 8A 75 47 34 A5 52 FF
+0090 | 7D 01 50 04 D6 77 DF F8 85 5E A0 FB BC B1 3F B7
+00A0 | E9 8A DE 47 BE C0 FF 81 08 19 13 AE A5 21 AD FD
+00B0 | 6F D2 FA 1D F3 94 D3 E4 E3 77 A7 7C CC 4F 75 ED
+00C0 | A1 4C 25 7B D5 6D C0 97 88 93 BA 55 73 35 0A 3F
+00D0 | A2 99 64 36 B8 DD BC C2 10 D4 BB 21 2C 73 E4 3D
+00E0 | 08 4C 13 B8 5A AC B7 86 A2 C2 A2 25 24 94 76 0A
+00F0 | F2 95 04 CC 7B EF 2E 21 24 4B A7 D8 D9 98 50 82
+0100 | 94 E9 2F 98 E3 92 5E 4C 77 E5 39 89 DF DA 7B 97
+0110 | DE 1D 4A 32 66 00 0B D0 04 76 6B C1 58 94 6A 20
+0120 | 7B 3A 38 11 95 76 4D EC 4D 10 2A A3 85 E0 8B D2
+0130 | 25 A6 F4 EF 2B 48 F5 13 AD 81 15 F2 AB 63 43 32
+0140 | 19 62 24 7A 4B 85 C3 76 22 47 9B F6 14 0D 3A B9
+0150 | E5 87 2F EC

Payload (de)serialization:

req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params;
message_id 8, 814E9050050BA79663CB90E0073227B66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Random number
message_id 8, 801D0716050BA796601E0CC0374227B66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 40, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Server-generated random number
pq 56, 12081C7D70DB91B6E5BD000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2052921093495645629
08221F493AA224373F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2458764437744793407
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 12081C7D70DB91B6E5BD000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2052921093495645629
08221F493AA224373F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2458764437744793407
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 80450BF5B6B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1354718059
04525E93F5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1381929973
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 8045A52F577000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1515386231
046A0CD1E3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1779225059
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 48, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Value received from server in Step 2
new_nonce 64, 320AF0B6F64E8FE8F2D60FA2BBB5E8F2FE 14F5D191D7FA92F2D4B23E28E0017AB8FE6AAC3F306D99D58E3076FD35776525 5418F8F9245CEB17EC81B167250F1DF9 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4 - + @@ -363,25 +363,25 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4 - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4 - + @@ -402,47 +402,47 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4
6) Server responds with:

Received payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 01 C8 73 28 51 BA 79 66
-0010 | D8 02 00 00 5C 07 E8 D0 89 66 1B 73 7A 31 36 75
-0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
-0030 | A0 A5 21 5A 41 BD 8B 78 FE 50 02 00 78 00 8C 2C
-0040 | 3C 3A 14 87 B7 55 24 DA 42 CB 21 0A D1 35 66 77
-0050 | 6A 35 1E 40 BB 80 CF 1D E8 B7 E3 F5 E4 B9 81 40
-0060 | 81 52 8D 9C 13 9B 07 BF 94 8D E1 A3 82 62 5A ED
-0070 | 30 F2 23 73 C8 43 66 25 EE 0D 19 6F 43 4B BC DD
-0080 | 7A 0C C5 7F 31 26 B6 0E DC 5D E4 74 D8 43 5C ED
-0090 | A3 52 C5 CC D0 06 07 FA 01 59 03 E2 2D 86 33 46
-00A0 | D6 17 19 E4 39 AD 8D E1 58 C3 E5 D2 77 E6 A9 D6
-00B0 | 2F 15 50 8F 55 06 CA A3 03 A1 0B E0 35 27 DB A3
-00C0 | 11 B7 8C 41 FB 15 27 5B CE 99 3F 67 16 D5 C4 0D
-00D0 | 1A DD 5B 43 3E 93 34 EB 79 D2 56 59 DE 74 C7 EF
-00E0 | 81 B9 2E F2 E9 69 D3 AC 2F AC A0 C4 6B D3 DE 12
-00F0 | 08 BA 71 A2 65 9D CB AE 03 A0 A7 63 5C C7 AC 32
-0100 | 2B 75 FC C7 0B 31 87 52 F3 30 E0 2E 5E 44 2D 8D
-0110 | 10 C1 38 AB 98 A4 3D 18 60 9D F4 0B 35 DA CE 07
-0120 | 17 C1 D5 A4 EE A5 7D 9C 19 15 ED 87 3B 51 50 99
-0130 | 91 57 4F BC B1 7F 79 60 DE 2B 10 3D 8B C1 7A 79
-0140 | 6C 1F C5 07 D8 F0 B9 E6 98 C8 F0 C2 55 70 9B D6
-0150 | F5 C7 79 54 28 D2 FF 2B 8A 85 ED 31 0F 18 32 00
-0160 | 32 BE 38 82 5A C7 C0 F1 D9 01 6B 0D 3E 11 2C B0
-0170 | 11 90 28 3C 08 20 0E 60 7E 6B B6 75 F2 CD 9D EF
-0180 | A6 A4 73 F3 44 A9 8E 12 DA 1A 7F 14 E1 DF 32 F4
-0190 | BC 7F 21 A6 5C 64 D1 C2 34 E4 A5 AE 63 FD E9 9E
-01A0 | B4 F4 D4 77 A9 57 87 AE 0B 78 49 0C 3E A6 EC 6E
-01B0 | 96 F0 DB E7 F3 27 E1 93 1B B9 75 61 3D 5F 9D 6B
-01C0 | 6D 8F CD 14 D3 E1 85 CE C2 EF A4 D3 40 A9 A5 95
-01D0 | C2 6B 54 5F 59 F3 F7 3E AC 32 34 97 40 29 39 85
-01E0 | F9 D1 FE 1F 16 CD C0 44 1A 1B BF D8 51 30 6E C6
-01F0 | C7 2D 82 E3 46 E6 44 98 A8 BB 38 4C F2 FE 45 08
-0200 | 81 3F F8 99 A9 3B 50 A8 CB 86 01 0B F3 2A 71 D9
-0210 | 0E E9 00 32 0A EB D8 9B 85 F8 80 32 FC 1B CA 09
-0220 | CE 46 B5 49 A2 45 34 AB 7A 71 98 9A 1B F2 35 E6
-0230 | 06 7B 5C 11 14 70 96 67 F4 25 A6 39 57 FD 5D 23
-0240 | B8 BC 6B 25 58 9D 3E 17 29 84 EC 7D 35 38 BC 91
-0250 | C9 D3 5C A0 1A D5 91 97 8B 90 3B 9B 1C 62 DE CC
-0260 | F0 2B 7A 69 5D A6 B8 DB 7A CA 36 04 A1 73 91 DC
-0270 | 18 2A 60 32 33 7A 8A 77 31 BA 16 4D 09 11 56 35
-0280 | 9A D5 CA AD 1C 1E B3 5E 6C 54 6B 26
+
0000 | 00 00 00 00 00 00 00 00 01 C0 1A B7 74 22 7B 66
+0010 | AC 02 00 00 5C 07 E8 D0 C3 C8 F6 BE 0E 4F 8A 08
+0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
+0030 | FC 98 9D 20 BA 91 C0 BC FE 50 02 00 74 7C AF 96
+0040 | BC A5 3E 0E 25 CB A3 5C B2 79 39 4D B6 F5 85 DA
+0050 | 43 39 B7 00 CE 70 31 AE 5A B9 05 F7 7A 8F AE 12
+0060 | C8 C3 57 A6 AE C0 68 90 A7 E3 35 45 F9 65 26 1A
+0070 | 92 03 81 18 CF 6D 6C F4 5C A7 A5 A7 A2 EA 32 12
+0080 | 6A 2F F7 C5 F5 46 BF 19 61 2E 38 A7 A1 3F DA 0B
+0090 | 8F 39 4B 8E E2 34 81 EC 51 1F 3C 4A 35 FC 98 A5
+00A0 | 9A 5F C2 48 55 47 D1 70 46 03 B9 44 2C 72 64 12
+00B0 | 2F E0 EC DE F0 37 BF E9 E1 EE 77 90 BE A1 F2 3B
+00C0 | AF 9D 2C 90 07 AD 84 08 36 62 56 DC 69 A1 A0 88
+00D0 | 80 CE 4A E7 74 3D DB C0 4E 64 51 E4 1D 04 6E 1C
+00E0 | 19 41 61 59 56 A0 5F DC 74 BE 59 A6 23 B4 F8 5A
+00F0 | F9 CD 07 DE 76 36 2D 73 59 FA B5 40 93 82 6B 20
+0100 | AC FD CB 71 F2 9D 79 9D 2B C1 C4 39 2B 45 B0 D3
+0110 | F9 BF F4 0F 88 32 A7 A3 75 FF D8 C5 C6 ED 99 EF
+0120 | F0 41 C6 A8 AB 78 AE C5 25 BB 66 AD FB C2 52 CE
+0130 | 07 53 9B 2C 2C 2F E7 AF 60 FD 6F 77 FC 4B 2E 1E
+0140 | 12 7D 6D C0 CA 61 66 4B 7B FB 2F 39 91 5D 36 D4
+0150 | F6 DB 34 83 C8 F4 AE 98 09 79 06 D7 2F A0 AC 72
+0160 | 8D 78 B3 B0 2F F1 33 5A AD 5E 49 3B 95 4A 69 DA
+0170 | B3 AF A3 95 CD 27 EF 4C 52 46 51 A5 1E 55 0A 9B
+0180 | B1 8F 2E 7E 3B 8D C2 AA 38 9D 4A CE E9 1A 8D F9
+0190 | 3D BD B6 86 D7 82 EC 84 1D F2 23 3C 06 57 14 94
+01A0 | B6 85 3C 81 52 2B 30 23 05 49 D1 F6 33 AF B3 B4
+01B0 | F1 90 D7 DA E8 95 8F 89 59 4F 7F C6 C0 AE 7D EC
+01C0 | 3C 57 71 E3 24 AE 90 7D 0A 36 CD C4 07 87 D6 1A
+01D0 | 13 40 B9 23 D9 60 0D 5A B7 00 77 8E 37 0D 8B 50
+01E0 | 08 4E 87 B2 D7 71 40 24 B9 0D B9 7D 2C 05 21 D9
+01F0 | 22 8A 26 F6 82 21 0A 96 BE 7E 41 CF 83 3A C6 9D
+0200 | 49 FB 41 DF 17 44 B6 B7 06 FD 9B 5B CF 8B 6B 98
+0210 | EF 8F 3B 98 61 AF 79 BF 2D 30 77 C5 37 3C E1 B6
+0220 | 6F 93 5A DA 66 24 FC DF 51 A3 FE 05 59 16 CF 0C
+0230 | D3 19 83 28 91 BA 7B EE 1A 18 4D AB B4 8D EA C8
+0240 | DB CE 26 DC 8D D0 2D 4A 2F 74 9B 33 CA 39 4C 93
+0250 | 0B DA 52 BC C6 19 B6 49 AD 5C 78 61 7C DD 2D EB
+0260 | 57 13 80 13 55 2F D8 5A 22 76 E7 51 E9 68 28 CD
+0270 | E3 FE 41 39 DB FA 83 02 BD A0 31 A6 5B D5 E1 7A
+0280 | EF 5C 0F 98 FA 29 F5 59 13 BA AA 1B

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 834E40B0050BA7966483B010074227B66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 40, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Value received from server in Step 2
p 56, 80450BF5B6B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1354718059
04525E93F5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1381929973
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 8045A52F577000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1515386231
046A0CD1E3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1779225059
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE0001004F980F1D38DBF00E09661EB0 20E3D27B7E45FBEDB51AC1EBC25E7E80 5E1445A8443773CEC2D18ECE2F36A2F5 27475A0B0F19F6899BA1B63E33AE4BF0 39465C9B04965954EB2B0C6D42F36A9D 7D134BB0A3B2E82E516A6585E3FD6BCE 0931A2214ECFDB88B92049FE2CC3A935 263BAA426A0F49A8FB178ACD76E7733F 1F7C8FE599461D287CE9E90D6972D1B1 012ED3ED0BA5D8656D13293065198288 2B1E81D26496F716C388FED4E5459C8D FBC68396C66E21D472B5DF6E0173222D 81EBBF19FF5B3979F1B2C24061FBADF9 0EAE632437F17EC8526E45AFEE11A9D9 FCEABDDFCCA928F36D75F25831E60E2A 887C08530C9F206FB9FC72FF6D3D76FC
8E18C60E
FE000100B9414995450EB67A3067A17A 8662ABCF4E40BFEFD972EDA822FF2DE3 6B9B04AFACA0FB5D1F95C2A55BAB4824 0811689C99671600428A754734A552FF 7D015004D677DFF8855EA0FBBCB13FB7 E98ADE47BEC0FF81081913AEA521ADFD 6FD2FA1DF394D3E4E377A77CCC4F75ED A14C257BD56DC0978893BA5573350A3F A2996436B8DDBCC210D4BB212C73E43D 084C13B85AACB786A2C2A2252494760A F29504CC7BEF2E21244BA7D8D9985082 94E92F98E3925E4C77E53989DFDA7B97 DE1D4A3266000BD004766BC158946A20 7B3A381195764DEC4D102AA385E08BD2 25A6F4EF2B48F513AD8115F2AB634332 1962247A4B85C37622479BF6140D3AB9
E5872FEC
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4 - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4 - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 6CCA66CCAF62B0BB0599E2F5DE10691D5A10DBFCD912E1A63001EA8D4

Decrypt encrypted_answer using the reverse of the process specified in step 6:

-
encrypted_answer = 78008C2C3C3A1487B75524DA42CB210AD13566776A351E40BB80CF1DE8B7E3F5E4B9814081528D9C139B07BF948DE1A382625AED30F22373C8436625EE0D196F434BBCDD7A0CC57F3126B60EDC5DE474D8435CEDA352C5CCD00607FA015903E22D863346D61719E439AD8DE158C3E5D277E6A9D62F15508F5506CAA303A10BE03527DBA311B78C41FB15275BCE993F6716D5C40D1ADD5B433E9334EB79D25659DE74C7EF81B92EF2E969D3AC2FACA0C46BD3DE1208BA71A2659DCBAE03A0A7635CC7AC322B75FCC70B318752F330E02E5E442D8D10C138AB98A43D18609DF40B35DACE0717C1D5A4EEA57D9C1915ED873B51509991574FBCB17F7960DE2B103D8BC17A796C1FC507D8F0B9E698C8F0C255709BD6F5C7795428D2FF2B8A85ED310F18320032BE38825AC7C0F1D9016B0D3E112CB01190283C08200E607E6BB675F2CD9DEFA6A473F344A98E12DA1A7F14E1DF32F4BC7F21A65C64D1C234E4A5AE63FDE99EB4F4D477A95787AE0B78490C3EA6EC6E96F0DBE7F327E1931BB975613D5F9D6B6D8FCD14D3E185CEC2EFA4D340A9A595C26B545F59F3F73EAC32349740293985F9D1FE1F16CDC0441A1BBFD851306EC6C72D82E346E64498A8BB384CF2FE4508813FF899A93B50A8CB86010BF32A71D90EE900320AEBD89B85F88032FC1BCA09CE46B549A24534AB7A71989A1BF235E6067B5C1114709667F425A63957FD5D23B8BC6B25589D3E172984EC7D3538BC91C9D35CA01AD591978B903B9B1C62DECCF02B7A695DA6B8DB7ACA3604A17391DC182A6032337A8A7731BA164D091156359AD5CAAD1C1EB35E6C546B26
-tmp_aes_key = D95D6D1F73B86C9F2FEE57031834B871E2EB8BB8B07F7DBAD277D94A023BEA0A
-tmp_aes_iv = 1FF06E972F99F6F583AD0491DCDF21A68218A8B019B3AFB930D4038E0AF0B6F6
+
encrypted_answer = 747CAF96BCA53E0E25CBA35CB279394DB6F585DA4339B700CE7031AE5AB905F77A8FAE12C8C357A6AEC06890A7E33545F965261A92038118CF6D6CF45CA7A5A7A2EA32126A2FF7C5F546BF19612E38A7A13FDA0B8F394B8EE23481EC511F3C4A35FC98A59A5FC2485547D1704603B9442C7264122FE0ECDEF037BFE9E1EE7790BEA1F23BAF9D2C9007AD8408366256DC69A1A08880CE4AE7743DDBC04E6451E41D046E1C1941615956A05FDC74BE59A623B4F85AF9CD07DE76362D7359FAB54093826B20ACFDCB71F29D799D2BC1C4392B45B0D3F9BFF40F8832A7A375FFD8C5C6ED99EFF041C6A8AB78AEC525BB66ADFBC252CE07539B2C2C2FE7AF60FD6F77FC4B2E1E127D6DC0CA61664B7BFB2F39915D36D4F6DB3483C8F4AE98097906D72FA0AC728D78B3B02FF1335AAD5E493B954A69DAB3AFA395CD27EF4C524651A51E550A9BB18F2E7E3B8DC2AA389D4ACEE91A8DF93DBDB686D782EC841DF2233C06571494B6853C81522B30230549D1F633AFB3B4F190D7DAE8958F89594F7FC6C0AE7DEC3C5771E324AE907D0A36CDC40787D61A1340B923D9600D5AB700778E370D8B50084E87B2D7714024B90DB97D2C0521D9228A26F682210A96BE7E41CF833AC69D49FB41DF1744B6B706FD9B5BCF8B6B98EF8F3B9861AF79BF2D3077C5373CE1B66F935ADA6624FCDF51A3FE055916CF0CD319832891BA7BEE1A184DABB48DEAC8DBCE26DC8DD02D4A2F749B33CA394C930BDA52BCC619B649AD5C78617CDD2DEB57138013552FD85A2276E751E96828CDE3FE4139DBFA8302BDA031A65BD5E17AEF5C0F98FA29F55913BAAA1B
+tmp_aes_key = 11FE8FBEBAF5CD0D44E94C94684E0F579AAD13781558F3EBFE6859BB2EAAB02A
+tmp_aes_iv = F7FFAE27F0F5E583A7ED94409F6B07420494B4BBA4CB58DF12214F4FFE6AAC3F

Yielding:

-
answer_with_hash = 4D02ECFAF65018FBB011DB8FAF59585E41E1D350BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004B9393CBF0FC5C756A7B9BC4868E27C112ACE80FC11C35740D11D19DEDD7C9F139C9E14F3AD6AA4E6470B46AFF695C1CFC7488D929A91B812B514B4F155A79E159A0928C38F4FFDB3DD16F02F1A1CDFFA36F6A271D420EF6551EC8CDF352EEB6BB591429C33ACA97251D2ED355785C0DFA7A99690D597620DD1FA7524871C7E83832E9D319C3090BD87573D3AD8463BDA039B7673FA84D9259E2A1EFDAF6A502FBCEDA94E1999E56DCA6D99124A90387F5FEF0065DC3E60E9644609679F27F7126FB171B4EC0456744A6851DFF36CBC036A994A54664412B386AB5FD67144A0EF3448C0A73346E943D65D1BBB9F2DDD6EBDD9926B6106F0AECC8645F435D3F4351BA79666D3FE27357C5B406
-answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7803000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004B9393CBF0FC5C756A7B9BC4868E27C112ACE80FC11C35740D11D19DEDD7C9F139C9E14F3AD6AA4E6470B46AFF695C1CFC7488D929A91B812B514B4F155A79E159A0928C38F4FFDB3DD16F02F1A1CDFFA36F6A271D420EF6551EC8CDF352EEB6BB591429C33ACA97251D2ED355785C0DFA7A99690D597620DD1FA7524871C7E83832E9D319C3090BD87573D3AD8463BDA039B7673FA84D9259E2A1EFDAF6A502FBCEDA94E1999E56DCA6D99124A90387F5FEF0065DC3E60E9644609679F27F7126FB171B4EC0456744A6851DFF36CBC036A994A54664412B386AB5FD67144A0EF3448C0A73346E943D65D1BBB9F2DDD6EBDD9926B6106F0AECC8645F435D3F4351BA79666D3FE27357C5B406
+
answer_with_hash = 71F689E89CAD988B73F321CE4D3811340E213502BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005810B14927DC018378E3D61892D117D7CD2B1033A9D78FB68861B8ACC93CE73A4B1E13C97C6E8EB772530F315F60D99A90CAEC61EE1FE8FE3AF215BF8D3ADC5AD1DBAFD0E7362722D0D61371388223D276DF3775AB6A8C0FD9E3C2C302C7CCC08B5330018090938C2BC596E20060F0E2D621F524FEB4C95B39D5F27839E4522BC47CDF06A3BF5CB31DFEA7A6CD9EC7C33D7F2C87FA40587D9E9331CA17CAA6925805238F3E101EC9F3930E4F9E9496A476874F02D3451AC80D442F470885D20746773F71689E6C3414CC26377B75991368DBD4E2A131F053C8B81A7B7215AD1A08D180602D41FE8E7F6AA317D57D3358917EC6F0E350212F87964F3E7694202374227B6622C1BE46AB564D3D
+answer = BA0D89B5C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001005810B14927DC018378E3D61892D117D7CD2B1033A9D78FB68861B8ACC93CE73A4B1E13C97C6E8EB772530F315F60D99A90CAEC61EE1FE8FE3AF215BF8D3ADC5AD1DBAFD0E7362722D0D61371388223D276DF3775AB6A8C0FD9E3C2C302C7CCC08B5330018090938C2BC596E20060F0E2D621F524FEB4C95B39D5F27839E4522BC47CDF06A3BF5CB31DFEA7A6CD9EC7C33D7F2C87FA40587D9E9331CA17CAA6925805238F3E101EC9F3930E4F9E9496A476874F02D3451AC80D442F470885D20746773F71689E6C3414CC26377B75991368DBD4E2A131F053C8B81A7B7215AD1A08D180602D41FE8E7F6AA317D57D3358917EC6F0E350212F87964F3E7694202374227B6622C1BE46AB564D3D

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 89 66 1B 73 7A 31 36 75 4D C8 B0 EE
-0010 | C3 20 B4 5A 5B 48 21 9D 38 80 3F AC A0 A5 21 5A
-0020 | 41 BD 8B 78 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C
+0010 | 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20
+0020 | BA 91 C0 BC 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 = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
 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 | 4B 93 93 CB F0 FC 5C 75 6A 7B 9B C4 86 8E 27 C1
-0140 | 12 AC E8 0F C1 1C 35 74 0D 11 D1 9D ED D7 C9 F1
-0150 | 39 C9 E1 4F 3A D6 AA 4E 64 70 B4 6A FF 69 5C 1C
-0160 | FC 74 88 D9 29 A9 1B 81 2B 51 4B 4F 15 5A 79 E1
-0170 | 59 A0 92 8C 38 F4 FF DB 3D D1 6F 02 F1 A1 CD FF
-0180 | A3 6F 6A 27 1D 42 0E F6 55 1E C8 CD F3 52 EE B6
-0190 | BB 59 14 29 C3 3A CA 97 25 1D 2E D3 55 78 5C 0D
-01A0 | FA 7A 99 69 0D 59 76 20 DD 1F A7 52 48 71 C7 E8
-01B0 | 38 32 E9 D3 19 C3 09 0B D8 75 73 D3 AD 84 63 BD
-01C0 | A0 39 B7 67 3F A8 4D 92 59 E2 A1 EF DA F6 A5 02
-01D0 | FB CE DA 94 E1 99 9E 56 DC A6 D9 91 24 A9 03 87
-01E0 | F5 FE F0 06 5D C3 E6 0E 96 44 60 96 79 F2 7F 71
-01F0 | 26 FB 17 1B 4E C0 45 67 44 A6 85 1D FF 36 CB C0
-0200 | 36 A9 94 A5 46 64 41 2B 38 6A B5 FD 67 14 4A 0E
-0210 | F3 44 8C 0A 73 34 6E 94 3D 65 D1 BB B9 F2 DD D6
-0220 | EB DD 99 26 B6 10 6F 0A EC C8 64 5F 43 5D 3F 43
-0230 | 51 BA 79 66
+0130 | 58 10 B1 49 27 DC 01 83 78 E3 D6 18 92 D1 17 D7 +0140 | CD 2B 10 33 A9 D7 8F B6 88 61 B8 AC C9 3C E7 3A +0150 | 4B 1E 13 C9 7C 6E 8E B7 72 53 0F 31 5F 60 D9 9A +0160 | 90 CA EC 61 EE 1F E8 FE 3A F2 15 BF 8D 3A DC 5A +0170 | D1 DB AF D0 E7 36 27 22 D0 D6 13 71 38 82 23 D2 +0180 | 76 DF 37 75 AB 6A 8C 0F D9 E3 C2 C3 02 C7 CC C0 +0190 | 8B 53 30 01 80 90 93 8C 2B C5 96 E2 00 60 F0 E2 +01A0 | D6 21 F5 24 FE B4 C9 5B 39 D5 F2 78 39 E4 52 2B +01B0 | C4 7C DF 06 A3 BF 5C B3 1D FE A7 A6 CD 9E C7 C3 +01C0 | 3D 7F 2C 87 FA 40 58 7D 9E 93 31 CA 17 CA A6 92 +01D0 | 58 05 23 8F 3E 10 1E C9 F3 93 0E 4F 9E 94 96 A4 +01E0 | 76 87 4F 02 D3 45 1A C8 0D 44 2F 47 08 85 D2 07 +01F0 | 46 77 3F 71 68 9E 6C 34 14 CC 26 37 7B 75 99 13 +0200 | 68 DB D4 E2 A1 31 F0 53 C8 B8 1A 7B 72 15 AD 1A +0210 | 08 D1 80 60 2D 41 FE 8E 7F 6A A3 17 D5 7D 33 58 +0220 | 91 7E C6 F0 E3 50 21 2F 87 96 4F 3E 76 94 20 23 +0230 | 74 22 7B 66

Payload (de)serialization:

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;
message_id 8, 801C8732851BA796601C01AB774227B66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4D8020000 (728 in decimal)AC020000 (684 in decimal) Message body length
nonce 24, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 40, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Value received from server in Step 2
encrypted_answer 56, 596FE50020078008C2C3C3A1487B75524DA 42CB210AD13566776A351E40BB80CF1D E8B7E3F5E4B9814081528D9C139B07BF 948DE1A382625AED30F22373C8436625 EE0D196F434BBCDD7A0CC57F3126B60E DC5DE474D8435CEDA352C5CCD00607FA 015903E22D863346D61719E439AD8DE1 58C3E5D277E6A9D62F15508F5506CAA3 03A10BE03527DBA311B78C41FB15275B CE993F6716D5C40D1ADD5B433E9334EB 79D25659DE74C7EF81B92EF2E969D3AC 2FACA0C46BD3DE1208BA71A2659DCBAE 03A0A7635CC7AC322B75FCC70B318752 F330E02E5E442D8D10C138AB98A43D18 609DF40B35DACE0717C1D5A4EEA57D9C 1915ED873B51509991574FBCB17F7960 DE2B103D8BC17A796C1FC507D8F0B9E6 98C8F0C255709BD6F5C7795428D2FF2B 8A85ED310F18320032BE38825AC7C0F1 D9016B0D3E112CB01190283C08200E60 7E6BB675F2CD9DEFA6A473F344A98E12 DA1A7F14E1DF32F4BC7F21A65C64D1C2 34E4A5AE63FDE99EB4F4D477A95787AE 0B78490C3EA6EC6E96F0DBE7F327E193 1BB975613D5F9D6B6D8FCD14D3E185CE C2EFA4D340A9A595C26B545F59F3F73E AC32349740293985F9D1FE1F16CDC044 1A1BBFD851306EC6C72D82E346E64498 A8BB384CF2FE4508813FF899A93B50A8 CB86010BF32A71D90EE900320AEBD89B 85F88032FC1BCA09CE46B549A24534AB 7A71989A1BF235E6067B5C1114709667 F425A63957FD5D23B8BC6B25589D3E17 2984EC7D3538BC91C9D35CA01AD59197 8B903B9B1C62DECCF02B7A695DA6B8DB 7ACA3604A17391DC182A6032337A8A77 31BA164D091156359AD5CAAD1C1EB35E
6C546B26
FE500200747CAF96BCA53E0E25CBA35C B279394DB6F585DA4339B700CE7031AE 5AB905F77A8FAE12C8C357A6AEC06890 A7E33545F965261A92038118CF6D6CF4 5CA7A5A7A2EA32126A2FF7C5F546BF19 612E38A7A13FDA0B8F394B8EE23481EC 511F3C4A35FC98A59A5FC2485547D170 4603B9442C7264122FE0ECDEF037BFE9 E1EE7790BEA1F23BAF9D2C9007AD8408 366256DC69A1A08880CE4AE7743DDBC0 4E6451E41D046E1C1941615956A05FDC 74BE59A623B4F85AF9CD07DE76362D73 59FAB54093826B20ACFDCB71F29D799D 2BC1C4392B45B0D3F9BFF40F8832A7A3 75FFD8C5C6ED99EFF041C6A8AB78AEC5 25BB66ADFBC252CE07539B2C2C2FE7AF 60FD6F77FC4B2E1E127D6DC0CA61664B 7BFB2F39915D36D4F6DB3483C8F4AE98 097906D72FA0AC728D78B3B02FF1335A AD5E493B954A69DAB3AFA395CD27EF4C 524651A51E550A9BB18F2E7E3B8DC2AA 389D4ACEE91A8DF93DBDB686D782EC84 1DF2233C06571494B6853C81522B3023 0549D1F633AFB3B4F190D7DAE8958F89 594F7FC6C0AE7DEC3C5771E324AE907D 0A36CDC40787D61A1340B923D9600D5A B700778E370D8B50084E87B2D7714024 B90DB97D2C0521D9228A26F682210A96 BE7E41CF833AC69D49FB41DF1744B6B7 06FD9B5BCF8B6B98EF8F3B9861AF79BF 2D3077C5373CE1B66F935ADA6624FCDF 51A3FE055916CF0CD319832891BA7BEE 1A184DABB48DEAC8DBCE26DC8DD02D4A 2F749B33CA394C930BDA52BCC619B649 AD5C78617CDD2DEB57138013552FD85A 2276E751E96828CDE3FE4139DBFA8302 BDA031A65BD5E17AEF5C0F98FA29F559
13BAAA1B
See below
@@ -570,13 +570,13 @@ answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7
7) Client computes random 2048-bit number b (using a sufficient amount of entropy) and sends the server a message

First, generate a secure random 2048-bit number b:

-
b = B54901B0FCE619B4BB06E10C4906114E305EA3B40CBABC779487869947285B69695F8D6FF849C770B56F994F79246B266EF92CB5D5508D1568903BDFB58B19D89C227B0A1A6150DE633CCB5441D59EFE6B331477C6290F2FCF9240FB664877D74AD202EF246776E9623464711FA4850EAC908C0FE569CE533B16302680059609B37BD6DFF5E6D633F55404D64D659A44BCA595B2194DBA462B19034640D081B45C5306FF1923339A5D6BBB1B34B6DCF452C26978967904F3F1D583E8441EEFC8055754B6A54A078C51D3BE2433807308D01152586356E13B2D0D9036FB6377DB94C3B9A1CDC6028CBD5C0571100F7D5C84F43A02519979FC43372F7D28A31729
+
b = 4371999EFC8E12CDADD9B755E5323F276E06B2227D354847BAE21C45ABEDC730300DF9D9C4C946D046FA721E1202C9FAA18792D9A35E80A3DD17A37E20957815299D2BE2A1173EFC329A74B75C75EF6DDF791AD27CB51C4491A33BAE153CCCDC6D8457FC1A4C743BFFF0A5780B5D425216B3894472499593E735153557052096674FC01310E012C4C99CE6E7F000B03260C491F15E4277373F5C27BFA5A2C1C438E9C7368E5B1436CC88FA6F9D036154BFB72474C4044C3345EA35E901FBC2163C2A8133666918C5848B64AE5273954AA8E8E4E850BFE7BEF67B3DDAAE37C7834E8EC9D75F4136A598BCA9BB840D4AFCF50DB07ED75942345B2C36414CAC39A9

Then compute g_b = pow(g, b) mod dh_prime

-
g_b = 2B66EF0EA54F1D950C0AE2DD63EED31AA21F82B5FB16ACF59DE34FC26B53B923FAA67B2FCBE5CB80F18C38CE163ECA2CB8952A59F6A7F2F3E71B8C6683A200F0E2936C1AEF59E932EA2C90EEB95051D17882BF814B8FEA7FFFB3AE993FCA9CC7684D2E9645AB246B5F62EF8CA2D6C98000663E48D47BF1BD2CEA15D3DBA8C8183903CB0CAE1E7DCD59BE34854446267748F91D84BEDA82689B00831B58ED63BBA326BA07F6873CEA5327001D83FFB3DD0C095959EAC002C70715F088B650F83CC1671295E51D4963EF41FC725F3FCE571E897B7E2C8B04125945985C34F5046960CFA6B38C641EEA1E3C3747ABB583B904D9EDD1BC8A92580C8BD7D6FCC2225E
+
g_b = 275A685782E5161214E261205ED27F15D103C9D93CDA91A6B3C99548E7271D7E222D42C9941B051981666EC8B7C4892F93EB0B41E176DE7082F6D062B6F7DDEFF57087330E1845C2234124268CE2E19401392493799680971014CFB37162506BD67E92E44C2B8196FFF5DE1AF3ABC01E1A54B02A50046784A5980EB83308D5713A5FB3A442CC10833D70C042465A10958F96D1601EE7909DB4102FEC8A1DEC82C280F4F13EDB8C89B6D2EBBDBE77614973ABBDE2AFA31E94B3A4E6FA3A96E443779C4C317070DF24643A1248509BB440EDE831BEC81CD165939BFCF1DA2D704A3504B8C888E2569E7EB020F3CA04FEF8DC5E4E0907FB495757B44DC908932406
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

-
0000 | 54 B6 43 66 89 66 1B 73 7A 31 36 75 4D C8 B0 EE
-0010 | C3 20 B4 5A 5B 48 21 9D 38 80 3F AC A0 A5 21 5A
-0020 | 41 BD 8B 78 00 00 00 00 00 00 00 00 FE 00 01 00
-0030 | 2B 66 EF 0E A5 4F 1D 95 0C 0A E2 DD 63 EE D3 1A
-0040 | A2 1F 82 B5 FB 16 AC F5 9D E3 4F C2 6B 53 B9 23
-0050 | FA A6 7B 2F CB E5 CB 80 F1 8C 38 CE 16 3E CA 2C
-0060 | B8 95 2A 59 F6 A7 F2 F3 E7 1B 8C 66 83 A2 00 F0
-0070 | E2 93 6C 1A EF 59 E9 32 EA 2C 90 EE B9 50 51 D1
-0080 | 78 82 BF 81 4B 8F EA 7F FF B3 AE 99 3F CA 9C C7
-0090 | 68 4D 2E 96 45 AB 24 6B 5F 62 EF 8C A2 D6 C9 80
-00A0 | 00 66 3E 48 D4 7B F1 BD 2C EA 15 D3 DB A8 C8 18
-00B0 | 39 03 CB 0C AE 1E 7D CD 59 BE 34 85 44 46 26 77
-00C0 | 48 F9 1D 84 BE DA 82 68 9B 00 83 1B 58 ED 63 BB
-00D0 | A3 26 BA 07 F6 87 3C EA 53 27 00 1D 83 FF B3 DD
-00E0 | 0C 09 59 59 EA C0 02 C7 07 15 F0 88 B6 50 F8 3C
-00F0 | C1 67 12 95 E5 1D 49 63 EF 41 FC 72 5F 3F CE 57
-0100 | 1E 89 7B 7E 2C 8B 04 12 59 45 98 5C 34 F5 04 69
-0110 | 60 CF A6 B3 8C 64 1E EA 1E 3C 37 47 AB B5 83 B9
-0120 | 04 D9 ED D1 BC 8A 92 58 0C 8B D7 D6 FC C2 22 5E
+
0000 | 54 B6 43 66 C3 C8 F6 BE 0E 4F 8A 08 AE F2 D4 4C
+0010 | 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59 FC 98 9D 20
+0020 | BA 91 C0 BC 00 00 00 00 00 00 00 00 FE 00 01 00
+0030 | 27 5A 68 57 82 E5 16 12 14 E2 61 20 5E D2 7F 15
+0040 | D1 03 C9 D9 3C DA 91 A6 B3 C9 95 48 E7 27 1D 7E
+0050 | 22 2D 42 C9 94 1B 05 19 81 66 6E C8 B7 C4 89 2F
+0060 | 93 EB 0B 41 E1 76 DE 70 82 F6 D0 62 B6 F7 DD EF
+0070 | F5 70 87 33 0E 18 45 C2 23 41 24 26 8C E2 E1 94
+0080 | 01 39 24 93 79 96 80 97 10 14 CF B3 71 62 50 6B
+0090 | D6 7E 92 E4 4C 2B 81 96 FF F5 DE 1A F3 AB C0 1E
+00A0 | 1A 54 B0 2A 50 04 67 84 A5 98 0E B8 33 08 D5 71
+00B0 | 3A 5F B3 A4 42 CC 10 83 3D 70 C0 42 46 5A 10 95
+00C0 | 8F 96 D1 60 1E E7 90 9D B4 10 2F EC 8A 1D EC 82
+00D0 | C2 80 F4 F1 3E DB 8C 89 B6 D2 EB BD BE 77 61 49
+00E0 | 73 AB BD E2 AF A3 1E 94 B3 A4 E6 FA 3A 96 E4 43
+00F0 | 77 9C 4C 31 70 70 DF 24 64 3A 12 48 50 9B B4 40
+0100 | ED E8 31 BE C8 1C D1 65 93 9B FC F1 DA 2D 70 4A
+0110 | 35 04 B8 C8 88 E2 56 9E 7E B0 20 F3 CA 04 FE F8
+0120 | DC 5E 4E 09 07 FB 49 57 57 B4 4D C9 08 93 24 06

Payload (de)serialization:

client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data;
nonce 4, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 20, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Value received from server in Step 2
g_a 300, 260FE0001004B9393CBF0FC5C756A7B9BC4 868E27C112ACE80FC11C35740D11D19D EDD7C9F139C9E14F3AD6AA4E6470B46A FF695C1CFC7488D929A91B812B514B4F 155A79E159A0928C38F4FFDB3DD16F02 F1A1CDFFA36F6A271D420EF6551EC8CD F352EEB6BB591429C33ACA97251D2ED3 55785C0DFA7A99690D597620DD1FA752 4871C7E83832E9D319C3090BD87573D3 AD8463BDA039B7673FA84D9259E2A1EF DAF6A502FBCEDA94E1999E56DCA6D991 24A90387F5FEF0065DC3E60E96446096 79F27F7126FB171B4EC0456744A6851D FF36CBC036A994A54664412B386AB5FD 67144A0EF3448C0A73346E943D65D1BB B9F2DDD6EBDD9926B6106F0AECC8645F
435D3F43
FE0001005810B14927DC018378E3D618 92D117D7CD2B1033A9D78FB68861B8AC C93CE73A4B1E13C97C6E8EB772530F31 5F60D99A90CAEC61EE1FE8FE3AF215BF 8D3ADC5AD1DBAFD0E7362722D0D61371 388223D276DF3775AB6A8C0FD9E3C2C3 02C7CCC08B5330018090938C2BC596E2 0060F0E2D621F524FEB4C95B39D5F278 39E4522BC47CDF06A3BF5CB31DFEA7A6 CD9EC7C33D7F2C87FA40587D9E9331CA 17CAA6925805238F3E101EC9F3930E4F 9E9496A476874F02D3451AC80D442F47 0885D20746773F71689E6C3414CC2637 7B75991368DBD4E2A131F053C8B81A7B 7215AD1A08D180602D41FE8E7F6AA317 D57D3358917EC6F0E350212F87964F3E
76942023
g_a diffie-hellman parameter
server_time 560, 451BA7966 (1719253585 in decimal)74227B66 (1719345780 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B589661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B7

The serialization of Client_DH_Inner_Data produces a string data. This is used to generate encrypted_data as specified in step 6, using the following inputs:

-
data = 54B6436689661B737A3136754DC8B0EEC320B45A5B48219D38803FACA0A5215A41BD8B780000000000000000FE0001002B66EF0EA54F1D950C0AE2DD63EED31AA21F82B5FB16ACF59DE34FC26B53B923FAA67B2FCBE5CB80F18C38CE163ECA2CB8952A59F6A7F2F3E71B8C6683A200F0E2936C1AEF59E932EA2C90EEB95051D17882BF814B8FEA7FFFB3AE993FCA9CC7684D2E9645AB246B5F62EF8CA2D6C98000663E48D47BF1BD2CEA15D3DBA8C8183903CB0CAE1E7DCD59BE34854446267748F91D84BEDA82689B00831B58ED63BBA326BA07F6873CEA5327001D83FFB3DD0C095959EAC002C70715F088B650F83CC1671295E51D4963EF41FC725F3FCE571E897B7E2C8B04125945985C34F5046960CFA6B38C641EEA1E3C3747ABB583B904D9EDD1BC8A92580C8BD7D6FCC2225E
-padding = 3F091096EE25625890DF6092
-tmp_aes_key = D95D6D1F73B86C9F2FEE57031834B871E2EB8BB8B07F7DBAD277D94A023BEA0A
-tmp_aes_iv = 1FF06E972F99F6F583AD0491DCDF21A68218A8B019B3AFB930D4038E0AF0B6F6
+
data = 54B64366C3C8F6BE0E4F8A08AEF2D44C207ACE47A0F0D7BA6EF00259FC989D20BA91C0BC0000000000000000FE000100275A685782E5161214E261205ED27F15D103C9D93CDA91A6B3C99548E7271D7E222D42C9941B051981666EC8B7C4892F93EB0B41E176DE7082F6D062B6F7DDEFF57087330E1845C2234124268CE2E19401392493799680971014CFB37162506BD67E92E44C2B8196FFF5DE1AF3ABC01E1A54B02A50046784A5980EB83308D5713A5FB3A442CC10833D70C042465A10958F96D1601EE7909DB4102FEC8A1DEC82C280F4F13EDB8C89B6D2EBBDBE77614973ABBDE2AFA31E94B3A4E6FA3A96E443779C4C317070DF24643A1248509BB440EDE831BEC81CD165939BFCF1DA2D704A3504B8C888E2569E7EB020F3CA04FEF8DC5E4E0907FB495757B44DC908932406
+padding = A1B036BFF3AA0739E1586422
+tmp_aes_key = 11FE8FBEBAF5CD0D44E94C94684E0F579AAD13781558F3EBFE6859BB2EAAB02A
+tmp_aes_iv = F7FFAE27F0F5E583A7ED94409F6B07420494B4BBA4CB58DF12214F4FFE6AAC3F

Process:

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);

Output:

-
encrypted_data = E4FF52003387B3D3C84A357EB093C476F509BFCF55E73C65E1E050B2F7E9DAD7271441A678527E6CBDE425677340054A00A97FDA4A270AF2F2ADCD6C58A5A3A3CEDD72EE325A5858783D32F90F3D061B78BAB8306AF8C65161EBA2093501CFF608E152ABB82B28B4AF717437337B66BD55AE96F8CCE264A48DFC30DC470615A6C0391BD29E8A7EC2BCE06A7F0D67EF64DCC798BCA89DC549BDE4B0B38CD444BA2FE9332CBE77AC0264BBF35D3CA98C0355C10167BCB811A63E4038BFDD02848D7AB35789E5A6AD0F2FECF3B94A36D0C2FAE6EF5542F3FD2B08DFFDA803912628E7CDE831CA61BEF1C2F6948D1DD4741CAF19466222C975A034B7E2A283E5631B47B729983585C3322038115E6B23E0D0967676A1DCB0006D038460BEAF8A903176A583AB626474EE31CAB38C589F5FCF4171C2A81E5CDCA93C4F8518AA681F852AB825AC1BED8D9F7C778E9A5AEA167F
+
encrypted_data = 84EA0D2A191290694D445EF398907CDBACB4DD384C142D2B99C5153096F4BC48728DDB6BA33078187E7A8CC810567D44AECBADA7C56075F8D978E9A8BC92D238A7BEB91EB726E521F914A678C5607C8EDF07FE3FA73B330773DFF8F1FAB43951516B142A6231DFE2878B7E6CB9D09D413F65663592B5F0702AFBD13913CEC21331FB97A802CA866561FB6673B7505AFA6DCA65E0A928E133B1BBB8910BB21B7CADEDF07A0CB390F5E3BA7FA3F9E94739ED49C1B1187C7387FCDC24F8F536DA0354C24AF5DDB94EF4264859AA2115A8046CFF2AEB40B064E1EF403E16A1090103A766B12C390C3C31540F46C2A35BF9B4E6786AAA990FC875A95C875B3C17DEC03168CA450B426E8BFFEDFE80C15A70F872C962073C2A05B8E6E0836512BE8ADC18B4CD2746AAF783EF3D1E4210516BB113062DFCFB11B58FF654A1E6454633F116ED380C9A8D51B4838EAAB43F4B5414

The length of the final string is 336 bytes.

7.2) set_client_DH_params query

Sent payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 B8 10 0D 00 51 BA 79 66
-0010 | 78 01 00 00 1F 5F 04 F5 89 66 1B 73 7A 31 36 75
-0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
-0030 | A0 A5 21 5A 41 BD 8B 78 FE 50 01 00 E4 FF 52 00
-0040 | 33 87 B3 D3 C8 4A 35 7E B0 93 C4 76 F5 09 BF CF
-0050 | 55 E7 3C 65 E1 E0 50 B2 F7 E9 DA D7 27 14 41 A6
-0060 | 78 52 7E 6C BD E4 25 67 73 40 05 4A 00 A9 7F DA
-0070 | 4A 27 0A F2 F2 AD CD 6C 58 A5 A3 A3 CE DD 72 EE
-0080 | 32 5A 58 58 78 3D 32 F9 0F 3D 06 1B 78 BA B8 30
-0090 | 6A F8 C6 51 61 EB A2 09 35 01 CF F6 08 E1 52 AB
-00A0 | B8 2B 28 B4 AF 71 74 37 33 7B 66 BD 55 AE 96 F8
-00B0 | CC E2 64 A4 8D FC 30 DC 47 06 15 A6 C0 39 1B D2
-00C0 | 9E 8A 7E C2 BC E0 6A 7F 0D 67 EF 64 DC C7 98 BC
-00D0 | A8 9D C5 49 BD E4 B0 B3 8C D4 44 BA 2F E9 33 2C
-00E0 | BE 77 AC 02 64 BB F3 5D 3C A9 8C 03 55 C1 01 67
-00F0 | BC B8 11 A6 3E 40 38 BF DD 02 84 8D 7A B3 57 89
-0100 | E5 A6 AD 0F 2F EC F3 B9 4A 36 D0 C2 FA E6 EF 55
-0110 | 42 F3 FD 2B 08 DF FD A8 03 91 26 28 E7 CD E8 31
-0120 | CA 61 BE F1 C2 F6 94 8D 1D D4 74 1C AF 19 46 62
-0130 | 22 C9 75 A0 34 B7 E2 A2 83 E5 63 1B 47 B7 29 98
-0140 | 35 85 C3 32 20 38 11 5E 6B 23 E0 D0 96 76 76 A1
-0150 | DC B0 00 6D 03 84 60 BE AF 8A 90 31 76 A5 83 AB
-0160 | 62 64 74 EE 31 CA B3 8C 58 9F 5F CF 41 71 C2 A8
-0170 | 1E 5C DC A9 3C 4F 85 18 AA 68 1F 85 2A B8 25 AC
-0180 | 1B ED 8D 9F 7C 77 8E 9A 5A EA 16 7F
+
0000 | 00 00 00 00 00 00 00 00 44 93 0D 00 74 22 7B 66
+0010 | 78 01 00 00 1F 5F 04 F5 C3 C8 F6 BE 0E 4F 8A 08
+0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
+0030 | FC 98 9D 20 BA 91 C0 BC FE 50 01 00 84 EA 0D 2A
+0040 | 19 12 90 69 4D 44 5E F3 98 90 7C DB AC B4 DD 38
+0050 | 4C 14 2D 2B 99 C5 15 30 96 F4 BC 48 72 8D DB 6B
+0060 | A3 30 78 18 7E 7A 8C C8 10 56 7D 44 AE CB AD A7
+0070 | C5 60 75 F8 D9 78 E9 A8 BC 92 D2 38 A7 BE B9 1E
+0080 | B7 26 E5 21 F9 14 A6 78 C5 60 7C 8E DF 07 FE 3F
+0090 | A7 3B 33 07 73 DF F8 F1 FA B4 39 51 51 6B 14 2A
+00A0 | 62 31 DF E2 87 8B 7E 6C B9 D0 9D 41 3F 65 66 35
+00B0 | 92 B5 F0 70 2A FB D1 39 13 CE C2 13 31 FB 97 A8
+00C0 | 02 CA 86 65 61 FB 66 73 B7 50 5A FA 6D CA 65 E0
+00D0 | A9 28 E1 33 B1 BB B8 91 0B B2 1B 7C AD ED F0 7A
+00E0 | 0C B3 90 F5 E3 BA 7F A3 F9 E9 47 39 ED 49 C1 B1
+00F0 | 18 7C 73 87 FC DC 24 F8 F5 36 DA 03 54 C2 4A F5
+0100 | DD B9 4E F4 26 48 59 AA 21 15 A8 04 6C FF 2A EB
+0110 | 40 B0 64 E1 EF 40 3E 16 A1 09 01 03 A7 66 B1 2C
+0120 | 39 0C 3C 31 54 0F 46 C2 A3 5B F9 B4 E6 78 6A AA
+0130 | 99 0F C8 75 A9 5C 87 5B 3C 17 DE C0 31 68 CA 45
+0140 | 0B 42 6E 8B FF ED FE 80 C1 5A 70 F8 72 C9 62 07
+0150 | 3C 2A 05 B8 E6 E0 83 65 12 BE 8A DC 18 B4 CD 27
+0160 | 46 AA F7 83 EF 3D 1E 42 10 51 6B B1 13 06 2D FC
+0170 | FB 11 B5 8F F6 54 A1 E6 45 46 33 F1 16 ED 38 0C
+0180 | 9A 8D 51 B4 83 8E AA B4 3F 4B 54 14

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 20, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Value received from server in Step 2
g_b 36, 260FE0001002B66EF0EA54F1D950C0AE2DD 63EED31AA21F82B5FB16ACF59DE34FC2 6B53B923FAA67B2FCBE5CB80F18C38CE 163ECA2CB8952A59F6A7F2F3E71B8C66 83A200F0E2936C1AEF59E932EA2C90EE B95051D17882BF814B8FEA7FFFB3AE99 3FCA9CC7684D2E9645AB246B5F62EF8C A2D6C98000663E48D47BF1BD2CEA15D3 DBA8C8183903CB0CAE1E7DCD59BE3485 4446267748F91D84BEDA82689B00831B 58ED63BBA326BA07F6873CEA5327001D 83FFB3DD0C095959EAC002C70715F088 B650F83CC1671295E51D4963EF41FC72 5F3FCE571E897B7E2C8B04125945985C 34F5046960CFA6B38C641EEA1E3C3747 ABB583B904D9EDD1BC8A92580C8BD7D6
FCC2225E
FE000100275A685782E5161214E26120 5ED27F15D103C9D93CDA91A6B3C99548 E7271D7E222D42C9941B051981666EC8 B7C4892F93EB0B41E176DE7082F6D062 B6F7DDEFF57087330E1845C223412426 8CE2E19401392493799680971014CFB3 7162506BD67E92E44C2B8196FFF5DE1A F3ABC01E1A54B02A50046784A5980EB8 3308D5713A5FB3A442CC10833D70C042 465A10958F96D1601EE7909DB4102FEC 8A1DEC82C280F4F13EDB8C89B6D2EBBD BE77614973ABBDE2AFA31E94B3A4E6FA 3A96E443779C4C317070DF24643A1248 509BB440EDE831BEC81CD165939BFCF1 DA2D704A3504B8C888E2569E7EB020F3 CA04FEF8DC5E4E0907FB495757B44DC9
08932406
Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding
@@ -746,7 +746,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + @@ -764,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - + @@ -785,17 +785,17 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
8) Auth key generation

The client computes the auth_key using formula g_a^b mod dh_prime:

-
auth_key = 924E77E092B9797DF9E377211291A664D8C63B494DCFEF1C505C880E42D71611BE8C473B4658A93CAF81867E3F4A9D194960D4EC790D1731088804BEA1C934CB3875ACF904286BEDF850E24DD1DB5F374D9DB720484DE04324A8C7B920AD9396E3964F7C4C580EC94BAF5A111099577595C0D818699CBF7629E186768FA204D9DB57B56B1FBAF03D48F9F79BEEDDB742051363E3A8AA7F22B2C87F3C6726F38C855F87BDA2849E89138B4D73A0B86F9F50CA279959B82C40ABC436BB1286337D61D3EA0C126F185AD465CF9368EE30AB112A09DAAF9996AB56D2CAC8091DFA7EDCF8740BC4B3AD2E2E595B29091670ABBF233B882C7C5B5F18CA4DE9B19D2CB4
+
auth_key = 6AFCF5F3CF1811729A7BADD937DBF9B661B830B6162E76B92CB6FC183C85D6B62CD9BA1942861A38DB26DC6B55334A2715C43C070B413DC24D71F1A971A31DA260C144A4C94A6E30BD2FD4CB92C070E0A190F2E2CB354971C8D460839561EFBA5A2480017A4D1B4E6F8AC3FCCD3287CB44BE51E2F71E544B3D7F473DE8D26E62E58020FA8E6A8C9A49710322EC463134B9070830B133E2E89388FF65346520E8BAAE7B4CF2CA9EA654A6D0A14E4BDEE3FB05CDD1EE2D70E331E755D11B39776908272FD9CF0E6066B10C448F8FF99231ECBA630DDE7D99730FB9A4433EBF654DD2A388AE75AE9507CCEADBA78B802C0EA5AA5ABEBBBFF830AF196D140546ADA5
9) Final server reply

The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:

Received payload (excluding transport headers/trailers):

-
0000 | 00 00 00 00 00 00 00 00 01 D4 97 24 52 BA 79 66
-0010 | 80 00 00 00 34 F7 CB 3B 89 66 1B 73 7A 31 36 75
-0020 | 4D C8 B0 EE C3 20 B4 5A 5B 48 21 9D 38 80 3F AC
-0030 | A0 A5 21 5A 41 BD 8B 78 F0 7C 80 6F 92 42 0A CC
-0040 | C8 F7 42 B9 41 39 6E EA
+
0000 | 00 00 00 00 00 00 00 00 01 34 15 70 75 22 7B 66
+0010 | 90 00 00 00 34 F7 CB 3B C3 C8 F6 BE 0E 4F 8A 08
+0020 | AE F2 D4 4C 20 7A CE 47 A0 F0 D7 BA 6E F0 02 59
+0030 | FC 98 9D 20 BA 91 C0 BC 45 39 C6 1E B8 8F FC 75
+0040 | EA 2F 49 54 F2 94 D1 D4

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 8B8100D0051BA796644930D0074227B66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 40, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Value received from server in Step 2
encrypted_data 56, 340FE500100E4FF52003387B3D3C84A357E B093C476F509BFCF55E73C65E1E050B2 F7E9DAD7271441A678527E6CBDE42567 7340054A00A97FDA4A270AF2F2ADCD6C 58A5A3A3CEDD72EE325A5858783D32F9 0F3D061B78BAB8306AF8C65161EBA209 3501CFF608E152ABB82B28B4AF717437 337B66BD55AE96F8CCE264A48DFC30DC 470615A6C0391BD29E8A7EC2BCE06A7F 0D67EF64DCC798BCA89DC549BDE4B0B3 8CD444BA2FE9332CBE77AC0264BBF35D 3CA98C0355C10167BCB811A63E4038BF DD02848D7AB35789E5A6AD0F2FECF3B9 4A36D0C2FAE6EF5542F3FD2B08DFFDA8 03912628E7CDE831CA61BEF1C2F6948D 1DD4741CAF19466222C975A034B7E2A2 83E5631B47B729983585C3322038115E 6B23E0D0967676A1DCB0006D038460BE AF8A903176A583AB626474EE31CAB38C 589F5FCF4171C2A81E5CDCA93C4F8518 AA681F852AB825AC1BED8D9F7C778E9A
5AEA167F
FE50010084EA0D2A191290694D445EF3 98907CDBACB4DD384C142D2B99C51530 96F4BC48728DDB6BA33078187E7A8CC8 10567D44AECBADA7C56075F8D978E9A8 BC92D238A7BEB91EB726E521F914A678 C5607C8EDF07FE3FA73B330773DFF8F1 FAB43951516B142A6231DFE2878B7E6C B9D09D413F65663592B5F0702AFBD139 13CEC21331FB97A802CA866561FB6673 B7505AFA6DCA65E0A928E133B1BBB891 0BB21B7CADEDF07A0CB390F5E3BA7FA3 F9E94739ED49C1B1187C7387FCDC24F8 F536DA0354C24AF5DDB94EF4264859AA 2115A8046CFF2AEB40B064E1EF403E16 A1090103A766B12C390C3C31540F46C2 A35BF9B4E6786AAA990FC875A95C875B 3C17DEC03168CA450B426E8BFFEDFE80 C15A70F872C962073C2A05B8E6E08365 12BE8ADC18B4CD2746AAF783EF3D1E42 10516BB113062DFCFB11B58FF654A1E6 454633F116ED380C9A8D51B4838EAAB4
3F4B5414
Encrypted client_DH_inner_data generated previously, serialized as a TL byte string
@@ -817,13 +817,13 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + @@ -835,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - + diff --git a/data/web/corefork.telegram.org/type/Boost.html b/data/web/corefork.telegram.org/type/Boost.html index 76bf55d79a..e402be9171 100644 --- a/data/web/corefork.telegram.org/type/Boost.html +++ b/data/web/corefork.telegram.org/type/Boost.html @@ -72,8 +72,8 @@
message_id 8, 801D4972452BA79660134157075227B66 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 480000000 (128 in decimal)90000000 (144 in decimal) Message body length
nonce 24, 1689661B737A3136754DC8B0EEC320B45AC3C8F6BE0E4F8A08AEF2D44C207ACE47 Value generated by client in Step 1
server_nonce 40, 165B48219D38803FACA0A5215A41BD8B78A0F0D7BA6EF00259FC989D20BA91C0BC Value received from server in Step 2
new_nonce_hash1 56, 16F07C806F92420ACCC8F742B941396EEA4539C61EB88FFC75EA2F4954F294D1D4 The 128 lower-order bits of SHA1 of the byte string derived from the new_nonce string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with auth_key_aux_hash. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/type/MyBoost.html b/data/web/corefork.telegram.org/type/MyBoost.html index d69ebc9858..e37df09aa2 100644 --- a/data/web/corefork.telegram.org/type/MyBoost.html +++ b/data/web/corefork.telegram.org/type/MyBoost.html @@ -72,8 +72,8 @@

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/type/PremiumGiftCodeOption.html b/data/web/corefork.telegram.org/type/PremiumGiftCodeOption.html index 7cd0e62cea..39392f14d9 100644 --- a/data/web/corefork.telegram.org/type/PremiumGiftCodeOption.html +++ b/data/web/corefork.telegram.org/type/PremiumGiftCodeOption.html @@ -73,7 +73,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/type/PrepaidGiveaway.html b/data/web/corefork.telegram.org/type/PrepaidGiveaway.html index 3223bba826..8a34f078d0 100644 --- a/data/web/corefork.telegram.org/type/PrepaidGiveaway.html +++ b/data/web/corefork.telegram.org/type/PrepaidGiveaway.html @@ -73,7 +73,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/type/payments.CheckedGiftCode.html b/data/web/corefork.telegram.org/type/payments.CheckedGiftCode.html index 527c24c17c..1dbb9d9d31 100644 --- a/data/web/corefork.telegram.org/type/payments.CheckedGiftCode.html +++ b/data/web/corefork.telegram.org/type/payments.CheckedGiftCode.html @@ -92,7 +92,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/type/payments.GiveawayInfo.html b/data/web/corefork.telegram.org/type/payments.GiveawayInfo.html index 25e927f6a5..0f34832a14 100644 --- a/data/web/corefork.telegram.org/type/payments.GiveawayInfo.html +++ b/data/web/corefork.telegram.org/type/payments.GiveawayInfo.html @@ -97,7 +97,7 @@

Related pages

Giveaways

-

Telegram channel administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

+

Telegram channel and supergroup administrators may launch giveaways to randomly distribute Telegram Premium subscriptions and other gifts among their followers, in exchange for boosts.

diff --git a/data/web/corefork.telegram.org/type/premium.BoostsList.html b/data/web/corefork.telegram.org/type/premium.BoostsList.html index 3c03b1dfcb..d15fd47cf6 100644 --- a/data/web/corefork.telegram.org/type/premium.BoostsList.html +++ b/data/web/corefork.telegram.org/type/premium.BoostsList.html @@ -96,8 +96,8 @@

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/type/premium.BoostsStatus.html b/data/web/corefork.telegram.org/type/premium.BoostsStatus.html index 756111b2fd..9a87ba70a1 100644 --- a/data/web/corefork.telegram.org/type/premium.BoostsStatus.html +++ b/data/web/corefork.telegram.org/type/premium.BoostsStatus.html @@ -91,8 +91,8 @@

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.

diff --git a/data/web/corefork.telegram.org/type/premium.MyBoosts.html b/data/web/corefork.telegram.org/type/premium.MyBoosts.html index f36c38c378..f17d325208 100644 --- a/data/web/corefork.telegram.org/type/premium.MyBoosts.html +++ b/data/web/corefork.telegram.org/type/premium.MyBoosts.html @@ -96,8 +96,8 @@

Related pages

-

Channel boosts

-

Telegram Premium users can grant their favorite channels additional features like the ability to post stories by giving them boosts.

+

Channel and supergroup boosts

+

Telegram Premium users can grant their favorite channels and supergroups additional features like the ability to post stories by giving them boosts.