diff --git a/data/web/corefork.telegram.org/constructor/boost.html b/data/web/corefork.telegram.org/constructor/boost.html index 53e3b50ed8..c7ae6d5a8b 100644 --- a/data/web/corefork.telegram.org/constructor/boost.html +++ b/data/web/corefork.telegram.org/constructor/boost.html @@ -126,7 +126,7 @@

Type

Boost

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 »

diff --git a/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html b/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html index 5864b3386a..1dd7de8ea4 100644 --- a/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/inputInvoicePremiumGiftCode.html @@ -83,7 +83,7 @@

Related pages

inputStorePaymentPremiumGiveaway

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

-

Giveaways

+

Giveaways & gifts

Telegram channel 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.

diff --git a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html index fd68110d8c..696152bf8a 100644 --- a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiftCode.html @@ -100,7 +100,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.

Channel boosts

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

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 0b0440bfd1..edee7913f7 100644 --- a/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html +++ b/data/web/corefork.telegram.org/constructor/inputStorePaymentPremiumGiveaway.html @@ -118,7 +118,7 @@

Related pages

Channel boosts

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

-

Giveaways

+

Giveaways & gifts

Telegram channel 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.

diff --git a/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html b/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html index 49728d9394..e0fdfbc011 100644 --- a/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/messageActionGiftCode.html @@ -101,7 +101,7 @@

Type

MessageAction

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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.

diff --git a/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html b/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html index 85f5ab7456..4ed1e8c614 100644 --- a/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html +++ b/data/web/corefork.telegram.org/constructor/messageActionGiveawayLaunch.html @@ -61,7 +61,7 @@

Type

MessageAction

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 9d61cb9c29..6164f587a7 100644 --- a/data/web/corefork.telegram.org/constructor/messageActionGiveawayResults.html +++ b/data/web/corefork.telegram.org/constructor/messageActionGiveawayResults.html @@ -81,7 +81,7 @@

Type

MessageAction

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 04a11aa5bd..68120e2d86 100644 --- a/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html +++ b/data/web/corefork.telegram.org/constructor/messageMediaGiveaway.html @@ -108,7 +108,7 @@

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.

-

Giveaways

+

Giveaways & gifts

Telegram channel 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/payments.checkedGiftCode.html b/data/web/corefork.telegram.org/constructor/payments.checkedGiftCode.html index 70d18df733..065af1be55 100644 --- a/data/web/corefork.telegram.org/constructor/payments.checkedGiftCode.html +++ b/data/web/corefork.telegram.org/constructor/payments.checkedGiftCode.html @@ -121,7 +121,7 @@

Type

payments.CheckedGiftCode

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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.

diff --git a/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html b/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html index 12d2b14461..fea0727979 100644 --- a/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html +++ b/data/web/corefork.telegram.org/constructor/payments.giveawayInfo.html @@ -107,7 +107,7 @@

Type

payments.GiveawayInfo

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 53cd6cb5e5..184aa047d2 100644 --- a/data/web/corefork.telegram.org/constructor/payments.giveawayInfoResults.html +++ b/data/web/corefork.telegram.org/constructor/payments.giveawayInfoResults.html @@ -113,7 +113,7 @@

Related pages

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

+

Giveaways & gifts

Telegram channel 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.boostsStatus.html b/data/web/corefork.telegram.org/constructor/premium.boostsStatus.html index 4ca7bffd54..0db94ae935 100644 --- a/data/web/corefork.telegram.org/constructor/premium.boostsStatus.html +++ b/data/web/corefork.telegram.org/constructor/premium.boostsStatus.html @@ -126,7 +126,7 @@

Type

premium.BoostsStatus

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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.

diff --git a/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html b/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html index d9ee3f282e..1ec057a690 100644 --- a/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html +++ b/data/web/corefork.telegram.org/constructor/premiumGiftCodeOption.html @@ -109,7 +109,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.

Bot Payments API

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 28ce5ecb44..473104f476 100644 --- a/data/web/corefork.telegram.org/constructor/prepaidGiveaway.html +++ b/data/web/corefork.telegram.org/constructor/prepaidGiveaway.html @@ -93,7 +93,7 @@

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.

-

Giveaways

+

Giveaways & gifts

Telegram channel 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/stats.broadcastStats.html b/data/web/corefork.telegram.org/constructor/stats.broadcastStats.html index 42b5d5b76e..65062903c0 100644 --- a/data/web/corefork.telegram.org/constructor/stats.broadcastStats.html +++ b/data/web/corefork.telegram.org/constructor/stats.broadcastStats.html @@ -79,32 +79,32 @@ views_per_post StatsAbsValueAndPrev -total_viewcount/postcount, for posts posted during the period in consideration (views_per_post).
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date). +total_viewcount/postcount, for posts posted during the period in consideration.
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date). shares_per_post StatsAbsValueAndPrev -total_viewcount/postcount, for posts posted during the period in consideration (views_per_post).
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date) +total_sharecount/postcount, for posts posted during the period in consideration.
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date) reactions_per_post StatsAbsValueAndPrev -  +total_reactions/postcount, for posts posted during the period in consideration.
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date) views_per_story StatsAbsValueAndPrev -  +total_views/storycount, for posts posted during the period in consideration.
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date) shares_per_story StatsAbsValueAndPrev -  +total_shares/storycount, for posts posted during the period in consideration.
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date) reactions_per_story StatsAbsValueAndPrev -  +total_reactions/storycount, for posts posted during the period in consideration.
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date) enabled_notifications @@ -159,22 +159,22 @@ reactions_by_emotion_graph StatsGraph -  +A graph containing the number of reactions on posts categorized by emotion story_interactions_graph StatsGraph -  +A graph containing the number of story views and shares story_reactions_by_emotion_graph StatsGraph -  +A graph containing the number of reactions on stories categorized by emotion recent_posts_interactions Vector<PostInteractionCounters> -  +Detailed statistics about number of views and shares of recently sent messages and stories diff --git a/data/web/corefork.telegram.org/constructor/stats.messageStats.html b/data/web/corefork.telegram.org/constructor/stats.messageStats.html index b88cc563bb..68b7baa0ed 100644 --- a/data/web/corefork.telegram.org/constructor/stats.messageStats.html +++ b/data/web/corefork.telegram.org/constructor/stats.messageStats.html @@ -74,7 +74,7 @@ reactions_by_emotion_graph StatsGraph -  +A graph containing the number of reactions on stories categorized by emotion diff --git a/data/web/corefork.telegram.org/constructor/stats.publicForwards.html b/data/web/corefork.telegram.org/constructor/stats.publicForwards.html index a3c8dd045f..f6b5b8c623 100644 --- a/data/web/corefork.telegram.org/constructor/stats.publicForwards.html +++ b/data/web/corefork.telegram.org/constructor/stats.publicForwards.html @@ -89,12 +89,12 @@ chats Vector<Chat> -  +Mentioned chats users Vector<User> -  +Mentioned users diff --git a/data/web/corefork.telegram.org/method/payments.applyGiftCode.html b/data/web/corefork.telegram.org/method/payments.applyGiftCode.html index 95b0e4419f..306666445d 100644 --- a/data/web/corefork.telegram.org/method/payments.applyGiftCode.html +++ b/data/web/corefork.telegram.org/method/payments.applyGiftCode.html @@ -101,7 +101,7 @@

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 a300155bfc..0f6ef770d6 100644 --- a/data/web/corefork.telegram.org/method/payments.checkGiftCode.html +++ b/data/web/corefork.telegram.org/method/payments.checkGiftCode.html @@ -95,7 +95,7 @@

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 9593d825f6..1a13f40760 100644 --- a/data/web/corefork.telegram.org/method/payments.getGiveawayInfo.html +++ b/data/web/corefork.telegram.org/method/payments.getGiveawayInfo.html @@ -103,7 +103,7 @@

Related pages

messageActionGiveawayLaunch

A giveaway was started.

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 dac93adac2..e1ab76bad0 100644 --- a/data/web/corefork.telegram.org/method/payments.getPremiumGiftCodeOptions.html +++ b/data/web/corefork.telegram.org/method/payments.getPremiumGiftCodeOptions.html @@ -82,7 +82,7 @@

Result

Vector<PremiumGiftCodeOption>

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 879d04984a..0cdcc756ab 100644 --- a/data/web/corefork.telegram.org/method/payments.launchPrepaidGiveaway.html +++ b/data/web/corefork.telegram.org/method/payments.launchPrepaidGiveaway.html @@ -111,7 +111,7 @@

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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.getBoostsList.html b/data/web/corefork.telegram.org/method/premium.getBoostsList.html index ed918427fc..f741d10429 100644 --- a/data/web/corefork.telegram.org/method/premium.getBoostsList.html +++ b/data/web/corefork.telegram.org/method/premium.getBoostsList.html @@ -115,7 +115,7 @@

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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.

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 3bfc1dbea6..b8eabd5675 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 C0 B0 04 00 CD F2 85 65
-0010 | 14 00 00 00 F1 8E 7E BE 9C 5D B4 46 2C 82 8D AA
-0020 | DD 7A 65 6B AE F3 09 74
+
0000 | 00 00 00 00 00 00 00 00 AC 0F 0F 00 D5 F7 85 65
+0010 | 14 00 00 00 F1 8E 7E BE F8 65 53 B8 A2 25 70 92
+0020 | 30 49 7E FC 0B CD 9A BC

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 08 03 0A CE F2 85 65
-0010 | A8 00 00 00 63 24 16 05 9C 5D B4 46 2C 82 8D AA
-0020 | DD 7A 65 6B AE F3 09 74 4A CE B6 44 30 A5 23 BE
-0030 | ED 33 B3 50 0F E8 9D 16 08 24 BC D1 82 BA 69 7B
-0040 | 7D 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 E4 41 97 D5 F7 85 65
+0010 | 88 00 00 00 63 24 16 05 F8 65 53 B8 A2 25 70 92
+0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
+0030 | AD DF BD 26 CA 9A FC C4 08 22 BB A4 9C C9 33 B3
+0040 | B5 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,13 +132,13 @@
- + - + @@ -150,19 +150,19 @@ - + - + - + @@ -208,22 +208,22 @@

Proof of work

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

Decompose into 2 prime cofactors p < q: 2647221040390437757 = 1501394959 * 1763174323

-
p = 1501394959
-q = 1763174323
+
pq = 2502775011231904693
+

Decompose into 2 prime cofactors p < q: 2502775011231904693 = 1293611899 * 1934718607

+
p = 1293611899
+q = 1934718607

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 24 BC D1 82 BA 69 7B 7D 00 00 00
-0010 | 04 59 7D 78 0F 00 00 00 04 69 17 E7 B3 00 00 00
-0020 | 9C 5D B4 46 2C 82 8D AA DD 7A 65 6B AE F3 09 74
-0030 | 4A CE B6 44 30 A5 23 BE ED 33 B3 50 0F E8 9D 16
-0040 | D7 9F B4 2D 36 4B EB 1A D2 A7 96 B0 27 6D 68 86
-0050 | 35 60 34 A7 99 A8 FE 9C EB CF F4 0D 69 7C A5 C8
+
0000 | 95 5F F5 A9 08 22 BB A4 9C C9 33 B3 B5 00 00 00
+0010 | 04 4D 1A F3 7B 00 00 00 04 73 51 76 8F 00 00 00
+0020 | F8 65 53 B8 A2 25 70 92 30 49 7E FC 0B CD 9A BC
+0030 | 6F EE C6 AF 0E 0E AC F6 AD DF BD 26 CA 9A FC C4
+0040 | B0 EF F8 70 F2 98 11 C6 EB 1F 02 70 EB 8C 1A 62
+0050 | 89 87 DF 50 A2 3F 0F 0F 01 FD 6B 73 5D 0E 71 84
 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 = 1763174323
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1763174323

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 = 955FF5A90824BCD182BA697B7D00000004597D780F000000046917E7B30000009C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D16D79FB42D364BEB1AD2A796B0276D6886356034A799A8FE9CEBCFF40D697CA5C802000000
-random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723260EF853598345DB9C4C9EF77DAC58E584495F1D017A6023C39DFA5E2FD691FBF40317B81F4AB9057BBE0BC675239CF52BFD9CB8172F925754F7A9C70D6A008
+
data = 955FF5A90822BBA49CC933B3B5000000044D1AF37B000000047351768F000000F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC4B0EFF870F29811C6EB1F0270EB8C1A628987DF50A23F0F0F01FD6B735D0E718402000000
+random_padding_bytes = 57C530F3CB6A2A9A32BAB2A7B71E9E523B95ADD2A0EC7A5BB1072E95188A9C77AA64AEF4E4F6DB16F0A93941719764414939DF702C40E3B509045F4ED647CD7AE1CA8B1FB98994A296ACDDCF5FE4011832681F459F57A5290D8CF702

And this is the output:

-
encrypted_data = 0C46CFFDF971091E85FB5DA6DB2F01F56301650805A0DBA8CC1CC5074BF40978A3813BCB5130F691A6D11561DCE21BD858F1FC45C294FA8DCE26C42C240CE6888A067539D6FF1A2F671029011B10288A9DE2569F3181F0D9C7BE15565E40A565B3BB8640861E6E7F7FF7DC878E2DFF5D53431C3C2333F65C32843EE004935AE0CC2BE9DAC48BF9879566E91961879AB8FD59F5593BFD12BF6869B33801127FB2124DEA7D1646D9F3204D088F94579E5007BC4BEFEC552E844275B7111EB4F5CA90785B9B7885BA1BBA9CC5264D41E34D1F07C14E53596EE3CF4A50FF3F0E22D1BEFE98511B5DAA766DA8642257A7A2262AE072DA5CA270701F2C11ED9957B69E
+
encrypted_data = A042D464B3FA02364F92263167DDD5160D4C346A3910BC4B17268699BECDD6EBB6056A1F1D0E747FDEB2BE1012280A5374A3E44F10F82AA6138DAF6AB9E4517BF11B83E71BFBAD0FCFBDE44DA0D7AA0D2B0464F6479EAB10C11656B8A40AC2AEF6344F11A7A6DB56319AB33EE6D63C105893189DB643F89C49A2D596BD7AF67BF6C577D1DE1CF3128EA698D324968D0C355020004AC840B08982918002E3A7482606A809D69CA5982106ED1B4AD0F190A599C4BC383BB5ED173A6EF45EEFB17C53F442D2AFF470458539DC0A7199EC50001B7186AB0612A98534BC55E0414E05162757A8FFCCDAA966DAB94F6CF42E61EBA79A952983197065B4F13600DE233E

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

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, 8C0B00400CDF28565AC0F0F00D5F78565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Random number
message_id 8, 80108030ACEF2856501E44197D5F78565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4A8000000 (168 in decimal)88000000 (136 in decimal) Message body length
nonce 24, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 40, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Server-generated random number
pq 56, 120824BCD182BA697B7D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2647221040390437757
0822BBA49CC933B3B5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2502775011231904693
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 120824BCD182BA697B7D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2647221040390437757
0822BBA49CC933B3B5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2502775011231904693
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 804597D780F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1501394959
044D1AF37B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1293611899
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 8046917E7B3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1763174323
047351768F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1934718607
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 48, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Value received from server in Step 2
new_nonce 64, 32D79FB42D364BEB1AD2A796B0276D6886 356034A799A8FE9CEBCFF40D697CA5C8B0EFF870F29811C6EB1F0270EB8C1A62 8987DF50A23F0F0F01FD6B735D0E7184 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723 - + @@ -363,25 +363,25 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723 - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723 - + @@ -402,47 +402,47 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 8ACF70100CEF28565B00F0F00D5F78565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 40, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Value received from server in Step 2
p 56, 804597D780F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1501394959
044D1AF37B000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1293611899
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 8046917E7B3000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1763174323
047351768F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1934718607
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE0001000C46CFFDF971091E85FB5DA6 DB2F01F56301650805A0DBA8CC1CC507 4BF40978A3813BCB5130F691A6D11561 DCE21BD858F1FC45C294FA8DCE26C42C 240CE6888A067539D6FF1A2F67102901 1B10288A9DE2569F3181F0D9C7BE1556 5E40A565B3BB8640861E6E7F7FF7DC87 8E2DFF5D53431C3C2333F65C32843EE0 04935AE0CC2BE9DAC48BF9879566E919 61879AB8FD59F5593BFD12BF6869B338 01127FB2124DEA7D1646D9F3204D088F 94579E5007BC4BEFEC552E844275B711 1EB4F5CA90785B9B7885BA1BBA9CC526 4D41E34D1F07C14E53596EE3CF4A50FF 3F0E22D1BEFE98511B5DAA766DA86422 57A7A2262AE072DA5CA270701F2C11ED
9957B69E
FE000100A042D464B3FA02364F922631 67DDD5160D4C346A3910BC4B17268699 BECDD6EBB6056A1F1D0E747FDEB2BE10 12280A5374A3E44F10F82AA6138DAF6A B9E4517BF11B83E71BFBAD0FCFBDE44D A0D7AA0D2B0464F6479EAB10C11656B8 A40AC2AEF6344F11A7A6DB56319AB33E E6D63C105893189DB643F89C49A2D596 BD7AF67BF6C577D1DE1CF3128EA698D3 24968D0C355020004AC840B089829180 02E3A7482606A809D69CA5982106ED1B 4AD0F190A599C4BC383BB5ED173A6EF4 5EEFB17C53F442D2AFF470458539DC0A 7199EC50001B7186AB0612A98534BC55 E0414E05162757A8FFCCDAA966DAB94F 6CF42E61EBA79A952983197065B4F136
00DE233E
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723 - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723 - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 0F245EB7D07E5BAEE500AE3342A1DBAA2A700F1D97D2687815F935723

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

-
encrypted_answer = F4749552B82FC12508C160114A3F57770D2014D144A6AC374630A3036D2184DA8CAAD538D2547E77A05F59A1AB4BB180BD37BD9E0A7AE4F9B5DB88595C7B6FA6398D4A94EF586FBE289B9D873A0674081373C28763F891860A8C916825FF0E0F5C99C3FBAF454BEF9CF2BDC62FDDB84B6302B3512E7738A7E5677559219F9A232B8E98073532F547E43EDACA37DF9D8BB6A09054F3334475F102FF3782E7C65A46A8F9C61AD494D1C612C3C9FA57DE426CB1E5ECE58A92E11E588A5B2F070E8D65B74D25C8A535C021DA4AFF44308E4CAB7A6E931F8AC599A3B47C11C509EB8976A79F33647B25C1256004BC00FEFE95ECABD0FC751E66BAE77C88DE4046C836E078584C0B6395D7A062F5B50636A50B3D6D619BB523EC7197F010536783183F6CCB56022B4612ACBDCC30B3F817B02ECD262A5A435ED9B07A9BD2EDD6461FC90620F3E259FCFE089564F09F21663805897E43837B1A8DFE65E9DE55638515EF3CB7B2272993675BC77D9EEC08265FA3BAEA7A8630679DF1FD56794FD79A1370343286E2109127A890B7070EA242BB9A887CCC7E16E4542A619023F68CF9B7F25D6E3EEC6CCD44FF8D90807DBD2C7804F61FEFEFE0A8FF8509CEBC1C3F54CE1D7A1EC6D909B5398920DE35A01822F7FEC0E355DFE6B79789F4C298D5020E9135EEED5DB8D743534B2DC986D70C59A63694E6101B71636ADCF34EDA441943538A88AD1FED9AF219941D57442EE9B9D97945DB594DA138F12795B9412EF9BDD0515B9F7BDEDC9FB8266A557435BBD3454563A179535EDB48DD0F0B226DEE9387E163A24BF703E36DA1D960529A411AD43E
-tmp_aes_key = 5CAB113F1EDBB162419D290DC70DBB2623F09D0008371C0FA8F41D64A06042A8
-tmp_aes_iv = CE463E10E70C3E8A3161858645E25D6482E420F9B8A7C7ED1225E3D3D79FB42D
+
encrypted_answer = 5A3F28851C305E8D8ABFD2FF4C9E77E7FA2F203CF4A96CCC76BE6684FC98FE9A2BB77D0623F8CD76CF2A7B2759F369C6FBEE8BAFE9FC320C2BD38484E67EC8240188166A2358F620061AADB191337140BCC359D6C085DA74576AA7DCD924A522ABA7447C504D1995387384F7599B1171161EA56BC59A51DB504F20F40F620C70D94AA64EB46D41990FBEE4352341660CE7E259FD2575189C56DC6AF0FC89644B4519B91C270C98D6DF1DFDF91BD2B5CF0776F89495B3759786D0242E7BD7790141BF7DFD92CAF78580BDDE6C4F5B12A504FF3B025F9F84407FD028C86A85DFF6170B397DE73F0E68788A20C9E35784A293D6B0E7DA0EB19F5CFB852313E6BCD1EF4C3DC93AD31A85AA7026197D0794DBA7C8A202EC6FC339E30F8BAD9556864382B70D5221CB1836DBFD14045C5E085A48FE13BD0625B99614F13A167D1186257C161DA57106CAA8F657A0A90F9C55E1F7FAE5157832BB9E408FB1C0E0C81322F7C8DB7EFB1B072166428EB469634A91C6AD829B3F654CA646F7EF22AC011848803AAD64FEF7C073724F03E99FB6D9A1780916B86B1E7C0B333852B70B8B4240C0B7D0872EB12FBF51A9FDF683F9B5E043945A49834F4EE780DCB4C794ADD938C79D109EA61BBAFE3A02AE7FBC3C740E04CDA772B0718A3736A95A4EC08F426972B158A68DACFD4CBC24E3E1B809FD83596CA0AF28EF1090A235DC9FF43BBACABCDC0EAC220833C6407479669672195A76F43A22BE32AE4AFC28CCAB1AEC79AE24D2A21857F9F440C18EE38CCA690A7C94407066E3C73977FEEC7DC93D39C65B68D68CD4D513800A08DF2C4B636C796C
+tmp_aes_key = 45C7AB984F1592CDDE5AF264AFE1C4870D8A34060F9EB956FC7EEDFC8B0E62D3
+tmp_aes_iv = D5BC4AF3EEED52FCD483055306E48EFDA96ABCD7B863C04EC5A6BDB6B0EFF870

Yielding:

-
answer_with_hash = D1A1EC49DA7D0B6EE2015B74488278FD3488A08BBA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001BE5A94663F1D6C71CA2DE2EEA59BF06F2203E7F18EF6B79F3629C4629B7B167E71D96144945BB3C785906120A82F47578134A3B29181A17C0794662B429C70B1B81444BC8BF768C1D370F9A887481D35BA3A9FCABAECF98624B69BF52235D714E64F91DF56FEE32C7CFA33E3E12F9AB1AB4BAFB20ED0D39D2363BE67CBCB712A67CF967B0CAF2A597BBEC08CD4720F9A896E5888386C6ED92F6CE9CF94F753D8B5FB6AFFA0977C3B734E9DBB9399DF1F481415636676B9A3113AF23D6C694F17E73519445D97A16A1A9AB071F198E1F6892D4F7416CBB98D2F33A1B85254AC94E4F304065FD866B36DFA935177FA5E96C943A14440F9DC7CD854D379D3B29D9CEF28565DC44C36FAEB08A0B
-answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001001BE5A94663F1D6C71CA2DE2EEA59BF06F2203E7F18EF6B79F3629C4629B7B167E71D96144945BB3C785906120A82F47578134A3B29181A17C0794662B429C70B1B81444BC8BF768C1D370F9A887481D35BA3A9FCABAECF98624B69BF52235D714E64F91DF56FEE32C7CFA33E3E12F9AB1AB4BAFB20ED0D39D2363BE67CBCB712A67CF967B0CAF2A597BBEC08CD4720F9A896E5888386C6ED92F6CE9CF94F753D8B5FB6AFFA0977C3B734E9DBB9399DF1F481415636676B9A3113AF23D6C694F17E73519445D97A16A1A9AB071F198E1F6892D4F7416CBB98D2F33A1B85254AC94E4F304065FD866B36DFA935177FA5E96C943A14440F9DC7CD854D379D3B29D9CEF28565DC44C36FAEB08A0B
+
answer_with_hash = AA4A7B99B43F4855C91740A36D93C7ED49851BD9BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100608BF52BD3E21BFC441F4749A732F5A86A38F62EBFE2E3505F5AE976B2707D4D4662D94A924892F1C267BCC62E2A6989480DA740E2C2152FB8F4D87D157CFA24D8F810081AD3907B4E7A4B012DC8766A8AB93CA5160E3D9DCF5420C5060630890994D7FC3CA1102BD08BCAF5B43A014BC0E2828DF9EDCC655F133E26BA75DB899BE10DA6CBDAA82D7BADB1193F396EECEABDE3EE4D4AC4AE9186BAB67C687850FF21C6C221555D1696E552D1826E4DF2EC26E5D7F6974B4FD7DE975455D28101E52A346D18FFEED518353FAE35B2F76B5ECD6530A23F8D275748DA7F7A4BE45B22328167FDF960B94BFF35E6721E9E9F87D87DFEDF83D68EDA070986638DF6A1D6F78565A4D74B8AF1D895E3
+answer = BA0D89B5F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100608BF52BD3E21BFC441F4749A732F5A86A38F62EBFE2E3505F5AE976B2707D4D4662D94A924892F1C267BCC62E2A6989480DA740E2C2152FB8F4D87D157CFA24D8F810081AD3907B4E7A4B012DC8766A8AB93CA5160E3D9DCF5420C5060630890994D7FC3CA1102BD08BCAF5B43A014BC0E2828DF9EDCC655F133E26BA75DB899BE10DA6CBDAA82D7BADB1193F396EECEABDE3EE4D4AC4AE9186BAB67C687850FF21C6C221555D1696E552D1826E4DF2EC26E5D7F6974B4FD7DE975455D28101E52A346D18FFEED518353FAE35B2F76B5ECD6530A23F8D275748DA7F7A4BE45B22328167FDF960B94BFF35E6721E9E9F87D87DFEDF83D68EDA070986638DF6A1D6F78565A4D74B8AF1D895E3

Generated payload (excluding transport headers/trailers):

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

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, 801AC54C7CEF2856501B8EC57D6F78565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4DC020000 (732 in decimal)78020000 (632 in decimal) Message body length
nonce 24, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 40, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Value received from server in Step 2
encrypted_answer 56, 596FE500200F4749552B82FC12508C16011 4A3F57770D2014D144A6AC374630A303 6D2184DA8CAAD538D2547E77A05F59A1 AB4BB180BD37BD9E0A7AE4F9B5DB8859 5C7B6FA6398D4A94EF586FBE289B9D87 3A0674081373C28763F891860A8C9168 25FF0E0F5C99C3FBAF454BEF9CF2BDC6 2FDDB84B6302B3512E7738A7E5677559 219F9A232B8E98073532F547E43EDACA 37DF9D8BB6A09054F3334475F102FF37 82E7C65A46A8F9C61AD494D1C612C3C9 FA57DE426CB1E5ECE58A92E11E588A5B 2F070E8D65B74D25C8A535C021DA4AFF 44308E4CAB7A6E931F8AC599A3B47C11 C509EB8976A79F33647B25C1256004BC 00FEFE95ECABD0FC751E66BAE77C88DE 4046C836E078584C0B6395D7A062F5B5 0636A50B3D6D619BB523EC7197F01053 6783183F6CCB56022B4612ACBDCC30B3 F817B02ECD262A5A435ED9B07A9BD2ED D6461FC90620F3E259FCFE089564F09F 21663805897E43837B1A8DFE65E9DE55 638515EF3CB7B2272993675BC77D9EEC 08265FA3BAEA7A8630679DF1FD56794F D79A1370343286E2109127A890B7070E A242BB9A887CCC7E16E4542A619023F6 8CF9B7F25D6E3EEC6CCD44FF8D90807D BD2C7804F61FEFEFE0A8FF8509CEBC1C 3F54CE1D7A1EC6D909B5398920DE35A0 1822F7FEC0E355DFE6B79789F4C298D5 020E9135EEED5DB8D743534B2DC986D7 0C59A63694E6101B71636ADCF34EDA44 1943538A88AD1FED9AF219941D57442E E9B9D97945DB594DA138F12795B9412E F9BDD0515B9F7BDEDC9FB8266A557435 BBD3454563A179535EDB48DD0F0B226D EE9387E163A24BF703E36DA1D960529A
411AD43E
FE5002005A3F28851C305E8D8ABFD2FF 4C9E77E7FA2F203CF4A96CCC76BE6684 FC98FE9A2BB77D0623F8CD76CF2A7B27 59F369C6FBEE8BAFE9FC320C2BD38484 E67EC8240188166A2358F620061AADB1 91337140BCC359D6C085DA74576AA7DC D924A522ABA7447C504D1995387384F7 599B1171161EA56BC59A51DB504F20F4 0F620C70D94AA64EB46D41990FBEE435 2341660CE7E259FD2575189C56DC6AF0 FC89644B4519B91C270C98D6DF1DFDF9 1BD2B5CF0776F89495B3759786D0242E 7BD7790141BF7DFD92CAF78580BDDE6C 4F5B12A504FF3B025F9F84407FD028C8 6A85DFF6170B397DE73F0E68788A20C9 E35784A293D6B0E7DA0EB19F5CFB8523 13E6BCD1EF4C3DC93AD31A85AA702619 7D0794DBA7C8A202EC6FC339E30F8BAD 9556864382B70D5221CB1836DBFD1404 5C5E085A48FE13BD0625B99614F13A16 7D1186257C161DA57106CAA8F657A0A9 0F9C55E1F7FAE5157832BB9E408FB1C0 E0C81322F7C8DB7EFB1B072166428EB4 69634A91C6AD829B3F654CA646F7EF22 AC011848803AAD64FEF7C073724F03E9 9FB6D9A1780916B86B1E7C0B333852B7 0B8B4240C0B7D0872EB12FBF51A9FDF6 83F9B5E043945A49834F4EE780DCB4C7 94ADD938C79D109EA61BBAFE3A02AE7F BC3C740E04CDA772B0718A3736A95A4E C08F426972B158A68DACFD4CBC24E3E1 B809FD83596CA0AF28EF1090A235DC9F F43BBACABCDC0EAC220833C640747966 9672195A76F43A22BE32AE4AFC28CCAB 1AEC79AE24D2A21857F9F440C18EE38C CA690A7C94407066E3C73977FEEC7DC9 3D39C65B68D68CD4D513800A08DF2C4B
636C796C
See below
@@ -570,13 +570,13 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1
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 = 1BBF3F304316CC3A5D73F8D6DB0052806F9A956D8F6E62845024A774C685A9B0A23F25BFF1ED9411D1B27F44D30F38F2BD590E31E172AE146F6FFD07EE4DBAF9DB1DA82835EE6282F19D4D0C25D5E0EBE30E2E8B1AD1064BBE97B1F0C82F70D8A8E78C03792496049B54EAD2DE2E988D87D4167D00DCFF2DEDD0D6E930D401F65EE15DECF29C99EDD08A587E865FAA3E3DEA7A79327859A461A6D42EF2F6B73F558CC7A007F803BE66EC6256327E0FCFEA6CBBC41E83B5C8E7D55ACAA3E789BCC002CC4ED0FFAD4478CFE9C4FEE04B939885C8F599A079D00B5212F5C95EDF4A521C13462DF851433B4276A112EF4F175C72D5DA63392C60ED4F4848480E6337
+
b = 8B2BC15FD6534001F46FD1EB85CFC5D33CB492BE3A40B04DC83E193C6CC922F1D0C0351D04E6E1E8F8E253E39E38BE0D3D03DAAF1B640E67228E6B891C5F00CF35360C7B3B5DD5685EDD62A0994D220A459F17A5043AF62930078353C6F0F6213008FC5AF639E27AFE40EF4AD3DC52763C27805EF623B5CB2C29F5176746513B5E448AF01DF862C5692D77464D58789E51FEF300A95D4E8F2C2ECBA4AE6680170770B5C9BC56A50A64C96E56364504570EF355A73E134D241CEF52E0EE6FA616A7B3917BC0CE508967FDC21F079F04C3040C76A8EAE7CCE96196DD0FA4AC75F1366723B4A8A1081D743AEC267E1BAED984CF6F8FECFEBFF41D7827B63B1F9951

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

-
g_b = 86CF8091DA0A274BA7E1F79421E3C6F28BFFD4B0C099BACFDE680C53E47279039BB1E529E48CCBCC55E93CFF9E9698B52ED3D7B497022EAB231CD183E72DC5EAD6EBD23F7472902F004A5D6B8549BF8315F30B5DE3A3A7F5050811CADD186DE11BA26FB586959FE10CB553281AE97C5AE1FD180A9CEA6C54AC7F87E880B645B1D2BA3ABD6926E32077245189C38C870B3A03309CE3E4510B71B92B69B58811BD365931EEE8A78AFD64AC130B86A85584320575C6D45D9CEB043AA8D536E646B237F0C9E7F0459BA8FD0B93FD666F8A5A8F608F88C96A82A87CC7E0A25843CA4704E9572267CE44B37558FB86FD6C881AE541CCEDCB11392550B0933499D2EBFC
+
g_b = C345BCB613357FFEC162397048AF74E249AAC8A11209D92EF089A4D341D1B6A361943235F98BF48E7E996F3D90DDEC63F26EBB5740EF0C5F7E25FF1A6C79943E0918C49A5E48D4C9EC7A478F222F067DAC227310383CFA05401503EF8C5CA72CD999E4BF24E80554B265E89DBB6590E90B0B4282803681AAC5C6E71AB4A9C1AE582DB03EBB500633DBD8372D2B1D56923E43D8197070DA2C74AD1E0D245C495B353DFC5123BD5957BA5F69EAEA94994304C3487437FC833B9CBA41C2BBFDE2421D2A1693ADBFE65AE62686A5A7E250AF7B3EF69BA29F9EA1D8CB2B410AF106E31975536335A2F32ECC0DE4A83EEB3D7299551ACFF48D25407FF4C29E1645E173
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 20, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Value received from server in Step 2
g_a 300, 260FE0001001BE5A94663F1D6C71CA2DE2E EA59BF06F2203E7F18EF6B79F3629C46 29B7B167E71D96144945BB3C78590612 0A82F47578134A3B29181A17C0794662 B429C70B1B81444BC8BF768C1D370F9A 887481D35BA3A9FCABAECF98624B69BF 52235D714E64F91DF56FEE32C7CFA33E 3E12F9AB1AB4BAFB20ED0D39D2363BE6 7CBCB712A67CF967B0CAF2A597BBEC08 CD4720F9A896E5888386C6ED92F6CE9C F94F753D8B5FB6AFFA0977C3B734E9DB B9399DF1F481415636676B9A3113AF23 D6C694F17E73519445D97A16A1A9AB07 1F198E1F6892D4F7416CBB98D2F33A1B 85254AC94E4F304065FD866B36DFA935 177FA5E96C943A14440F9DC7CD854D37
9D3B29D9
FE000100608BF52BD3E21BFC441F4749 A732F5A86A38F62EBFE2E3505F5AE976 B2707D4D4662D94A924892F1C267BCC6 2E2A6989480DA740E2C2152FB8F4D87D 157CFA24D8F810081AD3907B4E7A4B01 2DC8766A8AB93CA5160E3D9DCF5420C5 060630890994D7FC3CA1102BD08BCAF5 B43A014BC0E2828DF9EDCC655F133E26 BA75DB899BE10DA6CBDAA82D7BADB119 3F396EECEABDE3EE4D4AC4AE9186BAB6 7C687850FF21C6C221555D1696E552D1 826E4DF2EC26E5D7F6974B4FD7DE9754 55D28101E52A346D18FFEED518353FAE 35B2F76B5ECD6530A23F8D275748DA7F 7A4BE45B22328167FDF960B94BFF35E6 721E9E9F87D87DFEDF83D68EDA070986
638DF6A1
g_a diffie-hellman parameter
server_time 560, 4CEF28565 (1703277262 in decimal)D6F78565 (1703278550 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B59C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D1

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 = 54B643669C5DB4462C828DAADD7A656BAEF309744ACEB64430A523BEED33B3500FE89D160000000000000000FE00010086CF8091DA0A274BA7E1F79421E3C6F28BFFD4B0C099BACFDE680C53E47279039BB1E529E48CCBCC55E93CFF9E9698B52ED3D7B497022EAB231CD183E72DC5EAD6EBD23F7472902F004A5D6B8549BF8315F30B5DE3A3A7F5050811CADD186DE11BA26FB586959FE10CB553281AE97C5AE1FD180A9CEA6C54AC7F87E880B645B1D2BA3ABD6926E32077245189C38C870B3A03309CE3E4510B71B92B69B58811BD365931EEE8A78AFD64AC130B86A85584320575C6D45D9CEB043AA8D536E646B237F0C9E7F0459BA8FD0B93FD666F8A5A8F608F88C96A82A87CC7E0A25843CA4704E9572267CE44B37558FB86FD6C881AE541CCEDCB11392550B0933499D2EBFC
-padding = 53830E06631296991A05FD9C
-tmp_aes_key = 5CAB113F1EDBB162419D290DC70DBB2623F09D0008371C0FA8F41D64A06042A8
-tmp_aes_iv = CE463E10E70C3E8A3161858645E25D6482E420F9B8A7C7ED1225E3D3D79FB42D
+
data = 54B64366F86553B8A225709230497EFC0BCD9ABC6FEEC6AF0E0EACF6ADDFBD26CA9AFCC40000000000000000FE000100C345BCB613357FFEC162397048AF74E249AAC8A11209D92EF089A4D341D1B6A361943235F98BF48E7E996F3D90DDEC63F26EBB5740EF0C5F7E25FF1A6C79943E0918C49A5E48D4C9EC7A478F222F067DAC227310383CFA05401503EF8C5CA72CD999E4BF24E80554B265E89DBB6590E90B0B4282803681AAC5C6E71AB4A9C1AE582DB03EBB500633DBD8372D2B1D56923E43D8197070DA2C74AD1E0D245C495B353DFC5123BD5957BA5F69EAEA94994304C3487437FC833B9CBA41C2BBFDE2421D2A1693ADBFE65AE62686A5A7E250AF7B3EF69BA29F9EA1D8CB2B410AF106E31975536335A2F32ECC0DE4A83EEB3D7299551ACFF48D25407FF4C29E1645E173
+padding = 5716BBE199B59207403CDBA3
+tmp_aes_key = 45C7AB984F1592CDDE5AF264AFE1C4870D8A34060F9EB956FC7EEDFC8B0E62D3
+tmp_aes_iv = D5BC4AF3EEED52FCD483055306E48EFDA96ABCD7B863C04EC5A6BDB6B0EFF870

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 = FC0076BBF55CBF3D594C2106156CD12114ED5AFE9B6E1341105088404A5A467CA52A7395C1496DF78511E2170251B32321D6CE31CFD8762D16C9D85E43BFBBE89069ABBA6BDD742160FDAEE2A72BA51024A3E414D6356A2DEB3F1ADA8FEBF261CC510C9B5BAF0CAD5295C356746521EDBCD512F4A5DD62C61D27E4126D760FD85D0A1FC0A71F53162325FF09A0332B0820C6AC5266A1BEEFD36842BBA04926280C0E141FBA281D35A3B2677DB78AF8CCCF555434EE2409E323BBBC3CA4CA6D2AC6317ADED0E5956CB6C0B39B81221C0D747577CC508A835D378AFC716384720EFABC2BEABC2058B4081E3A37C3BE860D88FC656E3BAADF9A834DC895AA0E428AD9FB23693E0B886553ED3A828A1C9600958C84477A0A4598104E4539747775BDDD2692F7DF38A72EBC309886D38A3EDA99D0C2F3F11852B3533A49C6F2AEF50EC4BDDA11AD5F3D4792EDFFCBFDDA81C3
+
encrypted_data = F872E0E5AADE91C4BD03457955C88610A80331C3ABA9C60C8FE526D0836088BA4F1DABAC99201FEB86A1860909D61E26885DA3D540A29E09FBA89B2E4DA63E1E1E9795691CFFAD59F9B775000CA77209660324F90B89186DB0632472135D2991953B611693956AC1FE4ED38A030F544F37201C043FF0D12B3A1DCBC8E5FC746E138D7347F430EC9C1288DBED5DFF77D41AF16C732E3C9719720325BC769D9D7B99E4470D9DC4CCF09B17E21231BF18ED0A156705D772760AF38B7B8B49AEBFE3986CF167E754342BF8430B317117229EF6565E9191E78EBCD936A9F96EB6D6ED84ABC76AA13E6BC3494D26C2FFB674603E1C62A4FA3B942C63CBE0D7CD0661081C49CEAC0951AA8E40339E1D87D4DE1908C8CB89E8F28E2AB87C2A082CF504E3F41FD63BF6CCBA2CE89000BF97673C71584A4C416BA2A12C8F781721C3A0271868D4C01495698C6FB62B53D7B02BFE00

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 20, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Value received from server in Step 2
g_b 36, 260FE00010086CF8091DA0A274BA7E1F794 21E3C6F28BFFD4B0C099BACFDE680C53 E47279039BB1E529E48CCBCC55E93CFF 9E9698B52ED3D7B497022EAB231CD183 E72DC5EAD6EBD23F7472902F004A5D6B 8549BF8315F30B5DE3A3A7F5050811CA DD186DE11BA26FB586959FE10CB55328 1AE97C5AE1FD180A9CEA6C54AC7F87E8 80B645B1D2BA3ABD6926E32077245189 C38C870B3A03309CE3E4510B71B92B69 B58811BD365931EEE8A78AFD64AC130B 86A85584320575C6D45D9CEB043AA8D5 36E646B237F0C9E7F0459BA8FD0B93FD 666F8A5A8F608F88C96A82A87CC7E0A2 5843CA4704E9572267CE44B37558FB86 FD6C881AE541CCEDCB11392550B09334
99D2EBFC
FE000100C345BCB613357FFEC1623970 48AF74E249AAC8A11209D92EF089A4D3 41D1B6A361943235F98BF48E7E996F3D 90DDEC63F26EBB5740EF0C5F7E25FF1A 6C79943E0918C49A5E48D4C9EC7A478F 222F067DAC227310383CFA05401503EF 8C5CA72CD999E4BF24E80554B265E89D BB6590E90B0B4282803681AAC5C6E71A B4A9C1AE582DB03EBB500633DBD8372D 2B1D56923E43D8197070DA2C74AD1E0D 245C495B353DFC5123BD5957BA5F69EA EA94994304C3487437FC833B9CBA41C2 BBFDE2421D2A1693ADBFE65AE62686A5 A7E250AF7B3EF69BA29F9EA1D8CB2B41 0AF106E31975536335A2F32ECC0DE4A8 3EEB3D7299551ACFF48D25407FF4C29E
1645E173
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 = 6A2F70B26798A4323CD53A9168827E05C0B239F1FBA8D760FDDC5CCD87C4D155E711ADA123FC71180E098F4DAFF3CFCA2B688B8A9451422FBA978F7AF034C69CC3EAA76EFB89400C81023E9F693D1B46751A86045B1E2C1F4AFDCCB28FA0E11351B8C90C140DB46D01D737598413FE71D9CC234D147D098D697A8A413D5CF767FEF491B14F16E70E201CE0FA3A2D841E20722250724DB947087676DE121A232E57063541E97826B18C81336546A99064EEA39A0C9D6F66645E1C58BE3D4C608B943D912E681E2BD5968AA1A0CEB91C523469B4ED9B76DD7171887117469D4EA8A73DF8504408CF9B81CF39B5EB6E23618CD13AF11719E47C82C8CBD45BC1AE5A
+
auth_key = 58ABE6B4D20D52939B1A7D4A066FE9D94B893258701F5F2518EEBE068F33D13E89586194A33C7C6A9C4E17B0DEE95AED5F7B2C0EA20BA0034FAEDA104E17EC75D9FAF5B157E36C13949573AE2AD13A7A00D4087D046ABA8073836847F3B0C60BCA9563F1A630AB351AE48C44BB3147B0D0D09233B5BEDC3C534D7D40BCB16E296114D8C1EC56920CB986E61ECFC782BDD92DC2C0FDD51DFB6A5B4F19B110DF1B8AA21E467BC2C0573AEBD84AFC447618E2124F13A0B38409E8F2E42179196285F5CC50844AA6F2FA30F23914B036D629085CB65FADEA658C80333A3BAE61025A781817BA0015931698BCC04E03B157891966E69BAAAC013477286FBA0627B845
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 C8 99 17 CF F2 85 65
-0010 | 44 00 00 00 34 F7 CB 3B 9C 5D B4 46 2C 82 8D AA
-0020 | DD 7A 65 6B AE F3 09 74 4A CE B6 44 30 A5 23 BE
-0030 | ED 33 B3 50 0F E8 9D 16 0A 98 EF F2 D3 F6 A6 BA
-0040 | AE 59 DB BF C1 D5 EF 45
+
0000 | 00 00 00 00 00 00 00 00 01 FC 5B AA D6 F7 85 65
+0010 | AC 00 00 00 34 F7 CB 3B F8 65 53 B8 A2 25 70 92
+0020 | 30 49 7E FC 0B CD 9A BC 6F EE C6 AF 0E 0E AC F6
+0030 | AD DF BD 26 CA 9A FC C4 A1 08 F6 6E E0 B5 8C 3A
+0040 | E0 85 4D CA BA 23 BF 61

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 890FE0A00CEF2856514A40500D6F78565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 40, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Value received from server in Step 2
encrypted_data 56, 340FE500100FC0076BBF55CBF3D594C2106 156CD12114ED5AFE9B6E134110508840 4A5A467CA52A7395C1496DF78511E217 0251B32321D6CE31CFD8762D16C9D85E 43BFBBE89069ABBA6BDD742160FDAEE2 A72BA51024A3E414D6356A2DEB3F1ADA 8FEBF261CC510C9B5BAF0CAD5295C356 746521EDBCD512F4A5DD62C61D27E412 6D760FD85D0A1FC0A71F53162325FF09 A0332B0820C6AC5266A1BEEFD36842BB A04926280C0E141FBA281D35A3B2677D B78AF8CCCF555434EE2409E323BBBC3C A4CA6D2AC6317ADED0E5956CB6C0B39B 81221C0D747577CC508A835D378AFC71 6384720EFABC2BEABC2058B4081E3A37 C3BE860D88FC656E3BAADF9A834DC895 AA0E428AD9FB23693E0B886553ED3A82 8A1C9600958C84477A0A4598104E4539 747775BDDD2692F7DF38A72EBC309886 D38A3EDA99D0C2F3F11852B3533A49C6 F2AEF50EC4BDDA11AD5F3D4792EDFFCB
FDDA81C3
FE500100F872E0E5AADE91C4BD034579 55C88610A80331C3ABA9C60C8FE526D0 836088BA4F1DABAC99201FEB86A18609 09D61E26885DA3D540A29E09FBA89B2E 4DA63E1E1E9795691CFFAD59F9B77500 0CA77209660324F90B89186DB0632472 135D2991953B611693956AC1FE4ED38A 030F544F37201C043FF0D12B3A1DCBC8 E5FC746E138D7347F430EC9C1288DBED 5DFF77D41AF16C732E3C9719720325BC 769D9D7B99E4470D9DC4CCF09B17E212 31BF18ED0A156705D772760AF38B7B8B 49AEBFE3986CF167E754342BF8430B31 7117229EF6565E9191E78EBCD936A9F9 6EB6D6ED84ABC76AA13E6BC3494D26C2 FFB674603E1C62A4FA3B942C63CBE0D7 CD0661081C49CEAC0951AA8E40339E1D 87D4DE1908C8CB89E8F28E2AB87C2A08 2CF504E3F41FD63BF6CCBA2CE89000BF 97673C71584A4C416BA2A12C8F781721 C3A0271868D4C01495698C6FB62B53D7
B02BFE00
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/PremiumGiftCodeOption.html b/data/web/corefork.telegram.org/type/PremiumGiftCodeOption.html index 9889e17fe7..a992435710 100644 --- a/data/web/corefork.telegram.org/type/PremiumGiftCodeOption.html +++ b/data/web/corefork.telegram.org/type/PremiumGiftCodeOption.html @@ -72,7 +72,7 @@
message_id 8, 801C89917CFF2856501FC5BAAD6F78565 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 444000000 (68 in decimal)AC000000 (172 in decimal) Message body length
nonce 24, 169C5DB4462C828DAADD7A656BAEF30974F86553B8A225709230497EFC0BCD9ABC Value generated by client in Step 1
server_nonce 40, 164ACEB64430A523BEED33B3500FE89D166FEEC6AF0E0EACF6ADDFBD26CA9AFCC4 Value received from server in Step 2
new_nonce_hash1 56, 160A98EFF2D3F6A6BAAE59DBBFC1D5EF45A108F66EE0B58C3AE0854DCABA23BF61 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

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 7a2692b26d..b73c54e4d1 100644 --- a/data/web/corefork.telegram.org/type/PrepaidGiveaway.html +++ b/data/web/corefork.telegram.org/type/PrepaidGiveaway.html @@ -72,7 +72,7 @@

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 c7ec2a5334..e9d5406fe5 100644 --- a/data/web/corefork.telegram.org/type/payments.CheckedGiftCode.html +++ b/data/web/corefork.telegram.org/type/payments.CheckedGiftCode.html @@ -91,7 +91,7 @@

Related pages

-

Giveaways

+

Giveaways & gifts

Telegram channel 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 e3e11310e2..82187b65fd 100644 --- a/data/web/corefork.telegram.org/type/payments.GiveawayInfo.html +++ b/data/web/corefork.telegram.org/type/payments.GiveawayInfo.html @@ -96,7 +96,7 @@

Related pages

-

Giveaways

+

Giveaways & gifts

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