From 092a5561b6784d722e66c32ff77aafeeabfd2c69 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 16 Nov 2024 14:27:26 +0000 Subject: [PATCH] Update content of files --- .../corefork.telegram.org/api/invites.html | 7 +- .../web/corefork.telegram.org/api/layers.html | 8 +- .../corefork.telegram.org/api/reactions.html | 4 +- .../method/channels.toggleSignatures.html | 4 +- .../messages.getChatInviteImporters.html | 4 +- .../method/payments.getStarsTransactions.html | 8 +- .../mtproto/samples-auth_key.html | 406 +++++++++--------- 7 files changed, 225 insertions(+), 216 deletions(-) diff --git a/data/web/corefork.telegram.org/api/invites.html b/data/web/corefork.telegram.org/api/invites.html index ce9c68dad0..a938c53273 100644 --- a/data/web/corefork.telegram.org/api/invites.html +++ b/data/web/corefork.telegram.org/api/invites.html @@ -130,7 +130,10 @@ Use messages.deleteExportedC payments.fulfillStarsSubscription#cc5bebb3 peer:InputPeer subscription_id:string = Bool; payments.getStarsSubscriptions#032512c5 flags:# missing_balance:flags.0?true peer:InputPeer offset:string = payments.StarsStatus; -payments.changeStarsSubscription#c7770878 flags:# peer:InputPeer subscription_id:string canceled:flags.0?Bool = Bool; +payments.changeStarsSubscription#c7770878 flags:# peer:InputPeer subscription_id:string canceled:flags.0?Bool = Bool; +payments.getStarsTransactions#69da4557 flags:# inbound:flags.0?true outbound:flags.1?true ascending:flags.2?true subscription_id:flags.3?string peer:InputPeer offset:string limit:int = payments.StarsStatus; + +messages.getChatInviteImporters#df04dd4e flags:# requested:flags.0?true subscription_expired:flags.3?true peer:InputPeer link:flags.1?string q:flags.2?string offset_date:int offset_user:InputUser limit:int = messages.ChatInviteImporters;

Channel administrators can create special invite links that allow joining a channel in exchange for a monthly payment in Telegram Stars.

To create such links, invoke messages.exportChatInvite passing a starsSubscriptionPricing constructor to subscription_pricing, passing in peer the private channel we wish to sell access to, and in amount the amount of Telegram Stars users should pay every period seconds to gain and maintain access to the channel.
Currently the only allowed subscription period is 30*24*60*60, i.e. the user will be debited amount stars every month.

@@ -142,6 +145,8 @@ Currently the only allowed subscription period is 30*24*60*60, i.e.

To obtain a list of all active and cancelled subscriptions invoke payments.getStarsSubscriptions, passing inputPeerSelf to peer: this will return a vector of starsSubscription constructors, containing info about each subscription.

To cancel an active subscription, invoke payments.changeStarsSubscription passing inputPeerSelf to peer, the starsSubscription.id to subscription_id and boolTrue to canceled; to resubscribe, invoke the same method passing boolFalse to canceled.

When we get close to the end of the subscription period of one or more active subscriptions, and the current Telegram Star balance is not high enough to autorenew at least one of them, the "STARS_SUBSCRIPTION_LOW_BALANCE" suggestion » will be activated: when the user clicks on the suggestion, the client should fetch and display the list of expiring subscriptions by invoking payments.getStarsSubscriptions, passing inputPeerSelf to peer and setting the missing_balance flag: the returned subscriptions may be renewed by filling up the current Telegram Star balance with at least payments.starsStatus.subscriptions_missing_balance stars.

+

payments.getStarsTransactions may be used to fetch only and all transactions for a specific subscription by populating the subscription_id flag.

+

Admins may also use messages.getChatInviteImporters with the subscription_expired flag set to fetch only and all users with an expired subscription.

Join requests

channel#fe4478bd flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector<RestrictionReason> admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector<Username> stories_max_id:flags2.4?int color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int = Chat;
 
diff --git a/data/web/corefork.telegram.org/api/layers.html b/data/web/corefork.telegram.org/api/layers.html
index 66652cc062..381c1b04d5 100644
--- a/data/web/corefork.telegram.org/api/layers.html
+++ b/data/web/corefork.telegram.org/api/layers.html
@@ -208,6 +208,7 @@
 
 
Changed Constructors

Schema

-
messageMediaGiveaway#aa073beb flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.2?true channels:Vector<long> countries_iso2:flags.1?Vector<string> prize_description:flags.3?string quantity:int months:flags.4?int stars:flags.5?long until_date:int = MessageMedia;
+
channelAdminLogEventsFilter#ea107ae4 flags:# join:flags.0?true leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true info:flags.9?true settings:flags.10?true pinned:flags.11?true edit:flags.12?true delete:flags.13?true group_call:flags.14?true invites:flags.15?true send:flags.16?true forums:flags.17?true sub_extend:flags.18?true = ChannelAdminLogEventsFilter;
+messageMediaGiveaway#aa073beb flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.2?true channels:Vector<long> countries_iso2:flags.1?Vector<string> prize_description:flags.3?string quantity:int months:flags.4?int stars:flags.5?long until_date:int = MessageMedia; messageActionGiveawayLaunch#a80f51e4 flags:# stars:flags.0?long = MessageAction;
payments.giveawayInfoResults#e175e66f flags:# winner:flags.0?true refunded:flags.1?true start_date:int gift_code_slug:flags.3?string stars_prize:flags.4?long finish_date:int winners_count:int activated_count:flags.2?int = payments.GiveawayInfo;
boost#4b3e14d6 flags:# gift:flags.1?true giveaway:flags.2?true unclaimed:flags.3?true id:string user_id:flags.0?long giveaway_msg_id:flags.2?int date:int expires:int used_gift_slug:flags.4?string multiplier:flags.5?int stars:flags.6?long = Boost;
@@ -279,7 +281,6 @@
  • Added paid_reactions_available parameter in channelFull
  • Added flags, subscription_until_date parameters in channelParticipant
  • Added subscription_until_date parameter in channelParticipantSelf
  • -
  • Added sub_extend parameter in channelAdminLogEventsFilter
  • Added media parameter in sponsoredMessage
  • Added top_reactors parameter in messageReactions
  • Added reaction, subscription_period parameters in starsTransaction
  • @@ -292,8 +293,7 @@ channel#fe4478bd flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector<RestrictionReason> admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector<Username> stories_max_id:flags2.4?int color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int = Chat; channelFull#bbab348d flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector<string> groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet = ChatFull; channelParticipant#cb397619 flags:# user_id:long date:int subscription_until_date:flags.0?int = ChannelParticipant; -channelParticipantSelf#4f607bef flags:# via_request:flags.0?true user_id:long inviter_id:long date:int subscription_until_date:flags.1?int = ChannelParticipant; -channelAdminLogEventsFilter#ea107ae4 flags:# join:flags.0?true leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true info:flags.9?true settings:flags.10?true pinned:flags.11?true edit:flags.12?true delete:flags.13?true group_call:flags.14?true invites:flags.15?true send:flags.16?true forums:flags.17?true sub_extend:flags.18?true = ChannelAdminLogEventsFilter;
    +channelParticipantSelf#4f607bef flags:# via_request:flags.0?true user_id:long inviter_id:long date:int subscription_until_date:flags.1?int = ChannelParticipant;
    sponsoredMessage#4d93a990 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector<MessageEntity> photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string = SponsoredMessage;
    messageReactions#0a339f0b flags:# min:flags.0?true can_see_list:flags.2?true reactions_as_tags:flags.3?true results:Vector<ReactionCount> recent_reactions:flags.1?Vector<MessagePeerReaction> top_reactors:flags.4?Vector<MessageReactor> = MessageReactions;
    starsTransaction#433aeb2b flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true id:string stars:long date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> subscription_period:flags.12?int = StarsTransaction;
    diff --git a/data/web/corefork.telegram.org/api/reactions.html b/data/web/corefork.telegram.org/api/reactions.html index 5e16d78d7f..b2f7385055 100644 --- a/data/web/corefork.telegram.org/api/reactions.html +++ b/data/web/corefork.telegram.org/api/reactions.html @@ -105,13 +105,15 @@ Use messages.readReactions to mark messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector<int> = Updates;

    Paid reactions (aka Star reactions) may be sent to channel posts by invoking messages.sendPaidReaction: this will transfer count Telegram Stars to the channel's balance and increment by count the reaction counter of the Star reaction with type reactionPaid.

    -

    To enable paid reactions, channel admins must invoke messages.setChatAvailableReactions, passing boolTrue to paid_enabled and the previously configured reaction set in available_reactions (reactions_limit can be omitted, as omitting the flag will keep the previously configured value).

    +

    To enable paid reactions, channel admins must invoke messages.setChatAvailableReactions, passing boolTrue to paid_enabled and the previously configured reaction set in available_reactions (reactions_limit can be omitted, as omitting the flag will keep the previously configured value).

    +

    Users can determine whether a channel supports paid reactions by checking the value of the channelFull.paid_reactions_available flag.

    Each post with star reactions has a leaderboard with the top senders, but users can opt out of appearing there if they prefer more privacy.
    If the user explicitly chose to make their paid reaction(s) private, pass boolTrue to messages.sendPaidReaction.private.
    If the user explicitly chose to make their paid reaction(s) private, pass boolFalse to messages.sendPaidReaction.private.
    If the user did not make any explicit choice about the privacy of their paid reaction(s) (i.e. when reacting by clicking on an existing star reaction on a message), do not populate the messages.sendPaidReaction.private flag.

    To change the privacy of already sent paid reactions, invoke messages.togglePaidReactionPrivacy, passing the ID of the message, the channel and the desired privacy setting.

    To fetch the paid reactions leaderboard, invoke messages.getMessagesReactions: the returned updateMessageReactions constructor will contain a top_reactors vector of messageReactors, containing the paid reactions leaderboard for that message.

    +

    Channel admins can also see the end date of the current subscription period for any user in channelParticipant.subscription_until_date.

    React to a story

    See here » for more info on how to react to a story.

    Notifications about reactions

    diff --git a/data/web/corefork.telegram.org/method/channels.toggleSignatures.html b/data/web/corefork.telegram.org/method/channels.toggleSignatures.html index b618e4ab4a..c23d270bef 100644 --- a/data/web/corefork.telegram.org/method/channels.toggleSignatures.html +++ b/data/web/corefork.telegram.org/method/channels.toggleSignatures.html @@ -82,12 +82,12 @@ signatures_enabled flags.0?true -  +If set, enables message signatures. profiles_enabled flags.1?true -  +If set, messages from channel admins will link to their profiles, just like for group messages: can only be set if the signatures_enabled flag is set. channel diff --git a/data/web/corefork.telegram.org/method/messages.getChatInviteImporters.html b/data/web/corefork.telegram.org/method/messages.getChatInviteImporters.html index 5349ee1539..bc06cdf617 100644 --- a/data/web/corefork.telegram.org/method/messages.getChatInviteImporters.html +++ b/data/web/corefork.telegram.org/method/messages.getChatInviteImporters.html @@ -81,7 +81,7 @@ subscription_expired flags.3?true -  +Set this flag if the link is a Telegram Star subscription link » and only members with already expired subscription must be returned. peer @@ -167,6 +167,8 @@

    Related pages

    Invites

    Chats and channels may have a public username or a private invite link: private invite links may be further enhanced with per-user join requests.

    +

    Telegram Stars

    +

    Telegram Stars are virtual items that allow users to purchase digital goods and services from bots and mini apps inside the Telegram ecosystem, send gifts to content creators on the Telegram platform, and more.

    Pagination in the API

    How to fetch results from large lists of objects.

    diff --git a/data/web/corefork.telegram.org/method/payments.getStarsTransactions.html b/data/web/corefork.telegram.org/method/payments.getStarsTransactions.html index f0afbc38b3..ee3c103030 100644 --- a/data/web/corefork.telegram.org/method/payments.getStarsTransactions.html +++ b/data/web/corefork.telegram.org/method/payments.getStarsTransactions.html @@ -92,7 +92,7 @@ subscription_id flags.3?string -  +If set, fetches only transactions for the specified Telegram Star subscription ». peer @@ -137,12 +137,12 @@

    Bots can use this method

    Related pages

    +

    Telegram Stars

    +

    Telegram Stars are virtual items that allow users to purchase digital goods and services from bots and mini apps inside the Telegram ecosystem, send gifts to content creators on the Telegram platform, and more.

    inputPeerSelf

    Defines the current user.

    Pagination in the API

    -

    How to fetch results from large lists of objects.

    -

    Telegram Stars

    -

    Telegram Stars are virtual items that allow users to purchase digital goods and services from bots and mini apps inside the Telegram ecosystem, send gifts to content creators on the Telegram platform, and more.

    +

    How to fetch results from large lists of objects.

    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 195e50a60e..62765764cd 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 D8 7F 03 00 DD A6 38 67
    -0010 | 14 00 00 00 F1 8E 7E BE F2 FF EB DA 55 A0 62 61
    -0020 | 90 B6 57 AC CD F3 9C 05
    +
    0000 | 00 00 00 00 00 00 00 00 CC C4 07 00 09 A9 38 67
    +0010 | 14 00 00 00 F1 8E 7E BE 88 A0 0C B2 64 2E 0D CC
    +0020 | D6 BD 55 3F 42 43 30 B4

    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 30 5D EC DD A6 38 67
    -0010 | 50 00 00 00 63 24 16 05 F2 FF EB DA 55 A0 62 61
    -0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
    -0030 | D9 43 AB 98 93 64 1F B4 08 15 4F 99 C1 AD 76 59
    -0040 | B7 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
    +
    0000 | 00 00 00 00 00 00 00 00 01 78 D6 E3 09 A9 38 67
    +0010 | 50 00 00 00 63 24 16 05 88 A0 0C B2 64 2E 0D CC
    +0020 | D6 BD 55 3F 42 43 30 B4 8A 33 80 8D 1D 5B AE E2
    +0030 | 7E 2D 08 4D AB 67 CE D0 08 19 EE AA 4A 04 90 58
    +0040 | BD 00 00 00 15 C4 B5 1C 03 00 00 00 85 FD 64 DE
     0050 | 85 1D 9D D0 A5 B7 F7 09 35 5F C3 0B 21 6B E8 6C
     0060 | 02 2B B4 C3

    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 = 1535615055074580919
    -

    Decompose into 2 prime cofactors p < q: 1535615055074580919 = 1164798461 * 1318352579

    -
    p = 1164798461
    -q = 1318352579
    +
    pq = 1868618130286205117
    +

    Decompose into 2 prime cofactors p < q: 1868618130286205117 = 1093105483 * 1709458199

    +
    p = 1093105483
    +q = 1709458199

    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 15 4F 99 C1 AD 76 59 B7 00 00 00
    -0010 | 04 45 6D 69 FD 00 00 00 04 4E 94 76 C3 00 00 00
    -0020 | F2 FF EB DA 55 A0 62 61 90 B6 57 AC CD F3 9C 05
    -0030 | C8 97 E4 83 8C 1A 47 33 D9 43 AB 98 93 64 1F B4
    -0040 | 11 83 DF 59 14 4A 45 26 F1 B0 E6 C9 A4 B2 7C 6C
    -0050 | 80 36 BD EE 0C 5C 7A D7 07 F6 94 1A AE C9 28 8E
    +
    0000 | 95 5F F5 A9 08 19 EE AA 4A 04 90 58 BD 00 00 00
    +0010 | 04 41 27 77 4B 00 00 00 04 65 E4 43 17 00 00 00
    +0020 | 88 A0 0C B2 64 2E 0D CC D6 BD 55 3F 42 43 30 B4
    +0030 | 8A 33 80 8D 1D 5B AE E2 7E 2D 08 4D AB 67 CE D0
    +0040 | C6 1C 4C B1 76 7F D6 E5 66 1D 48 E8 30 35 96 85
    +0050 | BB E4 FD 66 9F 97 F4 20 34 05 82 EE CF 6A 39 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 = 1318352579
    - + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1318352579

    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 = 955FF5A908154F99C1AD7659B700000004456D69FD000000044E9476C3000000F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB41183DF59144A4526F1B0E6C9A4B27C6C8036BDEE0C5C7AD707F6941AAEC9288E02000000
    -random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611AF1FA618B2943619E8AA74B88439ED0870657660BC1167DFF5A7BBA65DC878A3F677C3E8D9DBCE966EBEADB069E11FCA0DA8EEA1F411182BAE338F54BCE44AE6
    +
    data = 955FF5A90819EEAA4A049058BD000000044127774B0000000465E4431700000088A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED0C61C4CB1767FD6E5661D48E830359685BBE4FD669F97F420340582EECF6A398402000000
    +random_padding_bytes = 4FD6DF70DAC10A80FB882E175ED130769E47ACA62330CFA8098708C10A765264176E3391DBC1E80CDEADD8C4A4EC3CBA7CA7C08FBBD4881A4435EC7B6A4A5CF5897E970AAA0330FA4C188BA83A02620EBC82AF9426FD88829A5683AD

    And this is the output:

    -
    encrypted_data = 350F55A03139C665B4C03D92B4E02D81AB71F6B7BE05CADBFAE678223B0DBB53192D60A9AD6A9E1A36EC9EE33A69B7ACD965E488C3ECB859DC7DCAF9303F24BA38556EC7584AE5448A979BF70F031EBD219F3795209A2D07A4E09DEF29638458CF1A3798D59483C8F7C8FA0D24FE31676E8AE9D8AB10AA7C0702A16CC2E096C861700D073E5131E716A98FE1051AD58526F1F151ADADD2E19F537E716CD5558330DEDDE1D49BE50AC20CE6A040823EB497037B49FCA16549479A4E7AF3D349B907E71FD32E675B487CB7995833619B8185F1DCDAFD7309302B0829C18B049CC796F4DC7A79CE49D614A92304D67EA44A1B57E70FA89441BDE0DA58484AACB666
    +
    encrypted_data = 619B4727009001B44082013B8731011A984F708CD5D0C253FF48BDB3DFAFA2637FFA25B40B4C4BFB28504DE7B3F0066D6895B79B7C29B3F74A5358493E28D73D3B0D14D531EF6A1A4270C593E8D10EB3B246AE668DA94B2F65F3CC4E63BD6AA543B543E51327D426B983BD2E1A64CDB6E697C9BA4671DDCCCAFEC541716862CBDA37A8A1F3678CC75CE9E564F0A6A19EABDFB94EFB41CBDB586611757F7EEFFAD47B62C9A65931079DFD9ECAF4A451D8470491FEC1E5EAC6BB92D2F6E7D4B7418527C486478159F867591422ED7130CA98D5B274EBEBB139EA3579A6A81113A3A70921388898D18A4F5B56E8931D422108292B1BE3E8DD4FEB59E6C8B530AE54

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

    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, 8D87F0300DDA63867CCC4070009A93867 Message ID generated as specified here » (unixtime() << 32) + (N*4)
    nonce 24, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Random number
    message_id 8, 801305DECDDA638670178D6E309A93867 Message ID generated as specified here » (unixtime() << 32) + (N*4)
    nonce 24, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 40, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Server-generated random number
    pq 56, 1208154F99C1AD7659B7000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1535615055074580919
    0819EEAA4A049058BD000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1868618130286205117
    Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
    pq 4, 1208154F99C1AD7659B7000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1535615055074580919
    0819EEAA4A049058BD000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1868618130286205117
    Single-byte prefix denoting length, 8-byte string, and three bytes of padding
    p 16, 804456D69FD000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1164798461
    044127774B000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1093105483
    First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    q 24, 8044E9476C3000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1318352579
    0465E44317000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1709458199
    Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    nonce 32, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 48, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Value received from server in Step 2
    new_nonce 64, 321183DF59144A4526F1B0E6C9A4B27C6C 8036BDEE0C5C7AD707F6941AAEC9288EC61C4CB1767FD6E5661D48E830359685 BBE4FD669F97F420340582EECF6A3984 Client-generated random number
    @@ -345,7 +345,7 @@ random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611A - + @@ -363,25 +363,25 @@ random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611A - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611A - + @@ -402,47 +402,47 @@ random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611A
    6) Server responds with:

    Received payload (excluding transport headers/trailers):

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

    Payload (de)serialization:

    server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
    message_id 8, 8B49A0300DDA63867D0C4070009A93867 Message ID generated as specified here » (unixtime() << 32) + (N*4)
    nonce 24, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 40, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Value received from server in Step 2
    p 56, 804456D69FD000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1164798461
    044127774B000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1093105483
    First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    q 64, 8044E9476C3000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1318352579
    0465E44317000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1709458199
    Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    encrypted_data 80, 260FE000100350F55A03139C665B4C03D92 B4E02D81AB71F6B7BE05CADBFAE67822 3B0DBB53192D60A9AD6A9E1A36EC9EE3 3A69B7ACD965E488C3ECB859DC7DCAF9 303F24BA38556EC7584AE5448A979BF7 0F031EBD219F3795209A2D07A4E09DEF 29638458CF1A3798D59483C8F7C8FA0D 24FE31676E8AE9D8AB10AA7C0702A16C C2E096C861700D073E5131E716A98FE1 051AD58526F1F151ADADD2E19F537E71 6CD5558330DEDDE1D49BE50AC20CE6A0 40823EB497037B49FCA16549479A4E7A F3D349B907E71FD32E675B487CB79958 33619B8185F1DCDAFD7309302B0829C1 8B049CC796F4DC7A79CE49D614A92304 D67EA44A1B57E70FA89441BDE0DA5848
    4AACB666
    FE000100619B4727009001B44082013B 8731011A984F708CD5D0C253FF48BDB3 DFAFA2637FFA25B40B4C4BFB28504DE7 B3F0066D6895B79B7C29B3F74A535849 3E28D73D3B0D14D531EF6A1A4270C593 E8D10EB3B246AE668DA94B2F65F3CC4E 63BD6AA543B543E51327D426B983BD2E 1A64CDB6E697C9BA4671DDCCCAFEC541 716862CBDA37A8A1F3678CC75CE9E564 F0A6A19EABDFB94EFB41CBDB58661175 7F7EEFFAD47B62C9A65931079DFD9ECA F4A451D8470491FEC1E5EAC6BB92D2F6 E7D4B7418527C486478159F867591422 ED7130CA98D5B274EBEBB139EA3579A6 A81113A3A70921388898D18A4F5B56E8 931D422108292B1BE3E8DD4FEB59E6C8
    B530AE54
    Value generated above
    @@ -464,7 +464,7 @@ random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611A - + @@ -482,19 +482,19 @@ random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611A - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = BE3707A89AE9B01B20AFBF2DFE2469A511655C0B8BC61714EB603611A

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

    -
    encrypted_answer = CCE5AA8B5B16C7C7A28DA686A2FD61D35132D4B94646846868C8E46FC7C7D5E6A23F306DB5158C7DD2F7FCC0128412048BD29047FD7C465709B53E99E45E6F31461B9359647BAD71CA638B2056F5E77F602D877450CC8FFD1D00D41ACB775223CBBB82FFB52D1FBBB49181D77A16E21118CBA599BD7BF00B4A296E70FF0875A3BA02938A8B8AEDA722442E978FFAC5E91F0CBAED014EB0DFA15C10A390FE07D888F73DC025B61F89D0B0232EA49FCA2578EB77992F35B2FC458F505D43DC835BC38A2C4B5AFE0C725B3B7C0E0D07DB18D3F9C9A839349FA95F11481CAD661C6E5885E580D2C7A1B7BFA779C14E099C44B25F0163F48778026DAFCA021AF842183F02AB9E423A76D4926783BA240D2342521BCC48D7BC7F95B33EE732FF2E90407486C4DA4F98B0A065CFA6DABAF74577D42A4F12861378F4799B5CA76C48AF2BDA6F4DA41E6F710373FA5B8299A9AC43BC6B38DA72D3EDCB0932D6A5D649E4D614FA1D3F86F97D5F3BD55C106C491CC68C37A8242878C585EAE61F661DFC095C9F158B7AB0F90D6BA970651D0FE686427118482D96305A4DF833F66C3E2BF952234E3188D1A3B63037481958BB97DE43CA621C78E1E2A03D684FAC4ED9A5B21456F0B7BF6C5A47219AF9FAACD100DD5B0BE3C3883EC993725192B897FFD3DA0C5AB775BEFB832283A902E6F6FF0DFF5B451FAB3C7A7CF3A047C11F8687397BDB24BEC90453266274BC52CEA459293A549980D0E255F45916BA91FB3338C50CB17FAEE9C1F6F0DE9C6768F9D37360DE5DE48862BDF9E67254A27C2DF56CD8867A00A703E8BE5D328CC7EE2B459054FAAC
    -tmp_aes_key = 594061AE8790464CD895F4EC6E87183395A1D3030D30F301DC4BEA649F715D0E
    -tmp_aes_iv = 4D77BC1E9C065F093B95359EA200FB0DBB6499A2A2356E2764FA3EC11183DF59
    +
    encrypted_answer = DB11E83912F451CCE9CCB5A4E27195CE8D9C5E74E879AF4B9180400A8369D0277E0AB8DF51B53AEC1C2C6ED2D4DAD540FA7EE1B4B755A1E8BA3DBF754D816D46906BB54E26CD798D2A33CB3B3CFD3223195FCDABD5743AB42ED42662355038FE07A92B4A6021EDF2A70A865ADFDD556A9323EE526B77529DCA6ECC6021AB76B6B29B8D42323549CF7381965587FFECC1B42343A690B04A4BFA53C3B3BF6180AD85CBB472BA836070704F5407A350CCE6E94376FEBE9D92F904D51E049A12F6634E0EA7752CB2AD5606701FCD2ACF433A7A7820F6B94D44C0FB3D9DEF73F6AD93E4A36C2FAA3E2240C82CE2A42D722128E689015DC95B4142CD09BA464D9EA679AA70860EA7BC9593153C6FE420832FA78C2CC4312FA6A81EBDBD612243B5271BB2EDCB2F64292890252EAEC0F6E73C5DA0CFD8A220BBE2F65AC3CAE6598295B54230CD85F3269A95FDFEE3AE04C7FEAC1134BE518EC7BCAB9972B49A58DBF38FD2FF60929E6CBB3A95CE1015FD927759A80D69D28B9043059862F73B1714116A4D480829C8C4203F6F9DDD34AE9F5FA95A0B1F64D634AB3BBF18EC7466D524DAD7354D2E957E3B309206A8EA674192F56B5EA3C63BB5F45662801D42261ED80F40125925118D6A4D560D2430C8BA3E89FFE53B292052B949264CC98723BFF150DC65E5FF2AF6063A7BE52050D7109CF331016F6BE2E9E8FE32191C4DB9A5B3FBC16AB5A287F9D25C69225B4B8940A0D4A3E62DDB678BB1A442FB71551D6B43F749AD46EBF53D322741834B5C2ED3EA3A14A55CACE0214D1CE525CDC9399B1CA2408CBFBC7083632FBD9345E5DD25B7A3
    +tmp_aes_key = 010C0C9B7A484D3A0D5BE8A9D860F7037247338A949243ABFD2598EA8BAFE4D1
    +tmp_aes_iv = E9737E2AA80D0D0FC0161512F6069DF0654F7B84D8A2C4679359DF78C61C4CB1

    Yielding:

    -
    answer_with_hash = 8EC374A6E5C8D1351060184DB3D5F334AD204BE5BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010047BFBF1B479D5A20E74889EF9CEECE80F9135067904A56B6EF0C4A30374085607A674D2C84C442956816AC2A72F835BAE1DDE4CB1735741A9306529EA3C143B85977FA6E2B2187F1F26ECF6D20281FC0AD417084F3DD54DE11ADE3DB7D3D9260184537FF353F4B0D02421D41B9F10A6DD2025F5637D5AB7A3115B9238F83E1BE9029A0FC444E5F516EC3E4E7508F12209ED9ED543E8BDF86B12F878C7DD35FAF9175234AA78D92A8AA4AD4AB38951F26A7AB03B00B5697C40587D31A320F1A87A8C6F6D5ACC40B04C0D4C927658C40CC014FC2FF678B78F818AA961B4AB61D7ADFD6E68BB3B180027FCF76D164852891E16CDAD45209B9EC8FA7D26E409E75E7DEA63867AEE470C76CBBBB02
    -answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB403000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010047BFBF1B479D5A20E74889EF9CEECE80F9135067904A56B6EF0C4A30374085607A674D2C84C442956816AC2A72F835BAE1DDE4CB1735741A9306529EA3C143B85977FA6E2B2187F1F26ECF6D20281FC0AD417084F3DD54DE11ADE3DB7D3D9260184537FF353F4B0D02421D41B9F10A6DD2025F5637D5AB7A3115B9238F83E1BE9029A0FC444E5F516EC3E4E7508F12209ED9ED543E8BDF86B12F878C7DD35FAF9175234AA78D92A8AA4AD4AB38951F26A7AB03B00B5697C40587D31A320F1A87A8C6F6D5ACC40B04C0D4C927658C40CC014FC2FF678B78F818AA961B4AB61D7ADFD6E68BB3B180027FCF76D164852891E16CDAD45209B9EC8FA7D26E409E75E7DEA63867AEE470C76CBBBB02
    +
    answer_with_hash = 7FC0273CC2008BCABACC587CFFDEA36CC61A2195BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100793E8C3BC9C45F094D11A4277C747A11D65D3B6F5C97D8320D4BE76ABF41C4D8EFB57AFE6B0C1C7E7A5F073BA509FADE1E20DEFE69CBEC0864C94A9778B40FD57EEBBCEDA4E088AA20C71F5F289E8CC4D202DF73C621BBDFA750255F05518CAE0E58EE6EA7A0319A5B23CBDE0B146EABE42B7022AA71074D6E9164063ABA342920779D5D253FB48EB9B9BDA2A9EF56833829FE1FB199ACDC85C853D97FE9D0B69159A4826777C28AB3024D1C41F9FF53815ACB7E3105D3E21AAB984CC110498298E55BEDE751A3E7ECD357D884ACA32F6E2E0CA121FDD7792B9C3E9D19B685AEE66EA166BCED647F2BF6F036C9B6513B2D95BD6E411B46EC9F21916CD1259B5809A938674022F989DA20AE22
    +answer = BA0D89B588A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100793E8C3BC9C45F094D11A4277C747A11D65D3B6F5C97D8320D4BE76ABF41C4D8EFB57AFE6B0C1C7E7A5F073BA509FADE1E20DEFE69CBEC0864C94A9778B40FD57EEBBCEDA4E088AA20C71F5F289E8CC4D202DF73C621BBDFA750255F05518CAE0E58EE6EA7A0319A5B23CBDE0B146EABE42B7022AA71074D6E9164063ABA342920779D5D253FB48EB9B9BDA2A9EF56833829FE1FB199ACDC85C853D97FE9D0B69159A4826777C28AB3024D1C41F9FF53815ACB7E3105D3E21AAB984CC110498298E55BEDE751A3E7ECD357D884ACA32F6E2E0CA121FDD7792B9C3E9D19B685AEE66EA166BCED647F2BF6F036C9B6513B2D95BD6E411B46EC9F21916CD1259B5809A938674022F989DA20AE22

    Generated payload (excluding transport headers/trailers):

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

    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, 801CCBA07DEA638670180DDF709A93867 Message ID generated as specified here » (unixtime() << 32) + (N*4)
    nonce 24, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 40, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Value received from server in Step 2
    encrypted_answer 56, 596FE500200CCE5AA8B5B16C7C7A28DA686 A2FD61D35132D4B94646846868C8E46F C7C7D5E6A23F306DB5158C7DD2F7FCC0 128412048BD29047FD7C465709B53E99 E45E6F31461B9359647BAD71CA638B20 56F5E77F602D877450CC8FFD1D00D41A CB775223CBBB82FFB52D1FBBB49181D7 7A16E21118CBA599BD7BF00B4A296E70 FF0875A3BA02938A8B8AEDA722442E97 8FFAC5E91F0CBAED014EB0DFA15C10A3 90FE07D888F73DC025B61F89D0B0232E A49FCA2578EB77992F35B2FC458F505D 43DC835BC38A2C4B5AFE0C725B3B7C0E 0D07DB18D3F9C9A839349FA95F11481C AD661C6E5885E580D2C7A1B7BFA779C1 4E099C44B25F0163F48778026DAFCA02 1AF842183F02AB9E423A76D4926783BA 240D2342521BCC48D7BC7F95B33EE732 FF2E90407486C4DA4F98B0A065CFA6DA BAF74577D42A4F12861378F4799B5CA7 6C48AF2BDA6F4DA41E6F710373FA5B82 99A9AC43BC6B38DA72D3EDCB0932D6A5 D649E4D614FA1D3F86F97D5F3BD55C10 6C491CC68C37A8242878C585EAE61F66 1DFC095C9F158B7AB0F90D6BA970651D 0FE686427118482D96305A4DF833F66C 3E2BF952234E3188D1A3B63037481958 BB97DE43CA621C78E1E2A03D684FAC4E D9A5B21456F0B7BF6C5A47219AF9FAAC D100DD5B0BE3C3883EC993725192B897 FFD3DA0C5AB775BEFB832283A902E6F6 FF0DFF5B451FAB3C7A7CF3A047C11F86 87397BDB24BEC90453266274BC52CEA4 59293A549980D0E255F45916BA91FB33 38C50CB17FAEE9C1F6F0DE9C6768F9D3 7360DE5DE48862BDF9E67254A27C2DF5 6CD8867A00A703E8BE5D328CC7EE2B45
    9054FAAC
    FE500200DB11E83912F451CCE9CCB5A4 E27195CE8D9C5E74E879AF4B9180400A 8369D0277E0AB8DF51B53AEC1C2C6ED2 D4DAD540FA7EE1B4B755A1E8BA3DBF75 4D816D46906BB54E26CD798D2A33CB3B 3CFD3223195FCDABD5743AB42ED42662 355038FE07A92B4A6021EDF2A70A865A DFDD556A9323EE526B77529DCA6ECC60 21AB76B6B29B8D42323549CF73819655 87FFECC1B42343A690B04A4BFA53C3B3 BF6180AD85CBB472BA836070704F5407 A350CCE6E94376FEBE9D92F904D51E04 9A12F6634E0EA7752CB2AD5606701FCD 2ACF433A7A7820F6B94D44C0FB3D9DEF 73F6AD93E4A36C2FAA3E2240C82CE2A4 2D722128E689015DC95B4142CD09BA46 4D9EA679AA70860EA7BC9593153C6FE4 20832FA78C2CC4312FA6A81EBDBD6122 43B5271BB2EDCB2F64292890252EAEC0 F6E73C5DA0CFD8A220BBE2F65AC3CAE6 598295B54230CD85F3269A95FDFEE3AE 04C7FEAC1134BE518EC7BCAB9972B49A 58DBF38FD2FF60929E6CBB3A95CE1015 FD927759A80D69D28B9043059862F73B 1714116A4D480829C8C4203F6F9DDD34 AE9F5FA95A0B1F64D634AB3BBF18EC74 66D524DAD7354D2E957E3B309206A8EA 674192F56B5EA3C63BB5F45662801D42 261ED80F40125925118D6A4D560D2430 C8BA3E89FFE53B292052B949264CC987 23BFF150DC65E5FF2AF6063A7BE52050 D7109CF331016F6BE2E9E8FE32191C4D B9A5B3FBC16AB5A287F9D25C69225B4B 8940A0D4A3E62DDB678BB1A442FB7155 1D6B43F749AD46EBF53D322741834B5C 2ED3EA3A14A55CACE0214D1CE525CDC9 399B1CA2408CBFBC7083632FBD9345E5
    DD25B7A3
    See below
    @@ -570,13 +570,13 @@ answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB - + - + @@ -594,13 +594,13 @@ answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB - + - + @@ -609,34 +609,34 @@ answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB
    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 = 192B33AF8896B004B5697EC9E8EDAB4C1F3D89312A51FD8FE4768D5B19AB55938FB45F9CDECAC165721285AB40E02100FC8768D54ED0C0AE5C3CEA32985EB22F112FAF76CFFE9CFF737ADEEBA9BC3498B342D6100FDD277D96F677960EDC2215527707ECAC55A1058581DF461948548D9D60714A5ED62F4CB4A1BA8DCAC0209DFA75E17D7AE8F09054442BB3EC20360665EDF5B1D67432F2AF9A761B3338CD6C31B47F78D81BD23E8548E23D5CE8AF796ECCC26D1C24E8CC7D08774C60BB1FCE5ACB3B9B6CC2B99FA72B1B2719E0107AA084FAF9BDC79A18D9B8DDBC101D6FA3C13D7D9E2F5DD127661626DD7A65148ED4135E6A19F1ADC0CA709A8A04603368
    +
    b = 8487CEEC95B08B349E56A2EACC775D5DB3AC7B0E231A6EFEB194B2305C10385F0DC79C589C5C38A446BB353DF4BBECFF96E2EDE7EEAC4384FBCD82CB8BC31C65FC38D69796691FDF314501CB010F486A677BB4638344DCC3A0A307F6A2F38AE1DF7B43D6BD00FF42121D15FE30B7FE307816771ECB9BCDF97E08CD0FFF783191B1FAEFECF533050252921FEA2D6DF31FFBBD62B5F836A07BCA342F2EE325D6D70706477D0E22234F25A427E561D2E276C9204E484A6F184C7462AB56DEB18A16EC4668EBCE28569275A36F59D05CD4D1D731531DD0B8633E87801DCAF5736E6BEE06C7A3AE7E47EAE3B53D35D4BB23EB1597048FFBC38A28F2B7E72D60147401

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

    -
    g_b = 35A300F632B557BCF18A927A4DE8AFFCAFF852DB2AB3F43FF3D2CC1B902B1126BD4FA49B87DE3F92184EEC68EBD16345E4D4B33C2816637FA8BECABC99C6028300E6B9304CB0A182916F6D9C865619D3993367E8FF6FC4E797C57E654A673C8712D4E07A9E64C1B4157C2C9624DF295B285BB044A45EC45CBC2A10649E02B2239072393E6AC72068136B884BBC418E024BF8A8DD12DBB534EFFF235B5E78AABB524CED3E2C18C607F9832066AF940BA10E30A299B0AC55E1B45864FA54A587D7ACE194868027A98F69595725E1AC03095E37C04861AE41BE642BB9244619509FB3453CF8325BDB0077AF51AD276D937F8618EEA693C6A116BF05B02AE956AC65
    +
    g_b = 6E9707456F57D1A5BA110E879B97A146952B760195EEE9B09A4416D13A60C4F3DC4F267EFB3EF6009D2E08B31E8097391583C3D63C9938D376D10A1934F2514F4C2938B7B76E3F59DA8C5B20FF08F1922A37808104CAE3DA3A395AF2EF5D4C1C9690BCE32066A1A082B88CFC5086F999AB7E847B4518EEFA8E6C2AB4E5988C93EC2EED9D264F3D297E7225921F87A70A7292F564E55F22C21116C3120ECA708B8171A690CE5E85676695669F581F702B8D99A42BBD927677AB6AEC82F714DB0C8096654171A913D91602D458F2E53BB2689F1D75BAECFAD5702447F679C2D326A67FD5A356E236018A4DC1A8315F5BD35ADDCA421A0DE3BDB4B55E2B8DA578E4
    7.1) generation of encrypted_data

    Generated payload (excluding transport headers/trailers):

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

    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, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 20, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Value received from server in Step 2
    g_a 300, 260FE00010047BFBF1B479D5A20E74889EF 9CEECE80F9135067904A56B6EF0C4A30 374085607A674D2C84C442956816AC2A 72F835BAE1DDE4CB1735741A9306529E A3C143B85977FA6E2B2187F1F26ECF6D 20281FC0AD417084F3DD54DE11ADE3DB 7D3D9260184537FF353F4B0D02421D41 B9F10A6DD2025F5637D5AB7A3115B923 8F83E1BE9029A0FC444E5F516EC3E4E7 508F12209ED9ED543E8BDF86B12F878C 7DD35FAF9175234AA78D92A8AA4AD4AB 38951F26A7AB03B00B5697C40587D31A 320F1A87A8C6F6D5ACC40B04C0D4C927 658C40CC014FC2FF678B78F818AA961B 4AB61D7ADFD6E68BB3B180027FCF76D1 64852891E16CDAD45209B9EC8FA7D26E
    409E75E7
    FE000100793E8C3BC9C45F094D11A427 7C747A11D65D3B6F5C97D8320D4BE76A BF41C4D8EFB57AFE6B0C1C7E7A5F073B A509FADE1E20DEFE69CBEC0864C94A97 78B40FD57EEBBCEDA4E088AA20C71F5F 289E8CC4D202DF73C621BBDFA750255F 05518CAE0E58EE6EA7A0319A5B23CBDE 0B146EABE42B7022AA71074D6E916406 3ABA342920779D5D253FB48EB9B9BDA2 A9EF56833829FE1FB199ACDC85C853D9 7FE9D0B69159A4826777C28AB3024D1C 41F9FF53815ACB7E3105D3E21AAB984C C110498298E55BEDE751A3E7ECD357D8 84ACA32F6E2E0CA121FDD7792B9C3E9D 19B685AEE66EA166BCED647F2BF6F036 C9B6513B2D95BD6E411B46EC9F21916C
    D1259B58
    g_a diffie-hellman parameter
    server_time 560, 4DEA63867 (1731765982 in decimal)09A93867 (1731766537 in decimal) Server time
    @@ -658,19 +658,19 @@ answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B5F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB

    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 = 54B64366F2FFEBDA55A0626190B657ACCDF39C05C897E4838C1A4733D943AB9893641FB40000000000000000FE00010035A300F632B557BCF18A927A4DE8AFFCAFF852DB2AB3F43FF3D2CC1B902B1126BD4FA49B87DE3F92184EEC68EBD16345E4D4B33C2816637FA8BECABC99C6028300E6B9304CB0A182916F6D9C865619D3993367E8FF6FC4E797C57E654A673C8712D4E07A9E64C1B4157C2C9624DF295B285BB044A45EC45CBC2A10649E02B2239072393E6AC72068136B884BBC418E024BF8A8DD12DBB534EFFF235B5E78AABB524CED3E2C18C607F9832066AF940BA10E30A299B0AC55E1B45864FA54A587D7ACE194868027A98F69595725E1AC03095E37C04861AE41BE642BB9244619509FB3453CF8325BDB0077AF51AD276D937F8618EEA693C6A116BF05B02AE956AC65
    -padding = BA5BA18ABF32B3EFA400DCBA
    -tmp_aes_key = 594061AE8790464CD895F4EC6E87183395A1D3030D30F301DC4BEA649F715D0E
    -tmp_aes_iv = 4D77BC1E9C065F093B95359EA200FB0DBB6499A2A2356E2764FA3EC11183DF59
    +
    data = 54B6436688A00CB2642E0DCCD6BD553F424330B48A33808D1D5BAEE27E2D084DAB67CED00000000000000000FE0001006E9707456F57D1A5BA110E879B97A146952B760195EEE9B09A4416D13A60C4F3DC4F267EFB3EF6009D2E08B31E8097391583C3D63C9938D376D10A1934F2514F4C2938B7B76E3F59DA8C5B20FF08F1922A37808104CAE3DA3A395AF2EF5D4C1C9690BCE32066A1A082B88CFC5086F999AB7E847B4518EEFA8E6C2AB4E5988C93EC2EED9D264F3D297E7225921F87A70A7292F564E55F22C21116C3120ECA708B8171A690CE5E85676695669F581F702B8D99A42BBD927677AB6AEC82F714DB0C8096654171A913D91602D458F2E53BB2689F1D75BAECFAD5702447F679C2D326A67FD5A356E236018A4DC1A8315F5BD35ADDCA421A0DE3BDB4B55E2B8DA578E4
    +padding = F06EBED4D1D4AB175BE9CC8E
    +tmp_aes_key = 010C0C9B7A484D3A0D5BE8A9D860F7037247338A949243ABFD2598EA8BAFE4D1
    +tmp_aes_iv = E9737E2AA80D0D0FC0161512F6069DF0654F7B84D8A2C4679359DF78C61C4CB1

    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 = 8DC5EDF4570B333797D9B0A39B2803B5EFDD4DECE3D7305D1A05348C7EF11BAC05FD42853527D56914DDF9D4AA5C2A42CEF5493B67ED45605BB297DB2B2F0AED96B028BA3029F7A3D39C689B271C6B42A124EA9E82B6B473B844F2DC8B40E1589E88FA1AD7CB598904E540C66B1AE111D26C74C0BA4261FBD313144F5106940A417E042B2553A55AD456154AD9F6C49D26D7CC7A853561539AD08A59B1B39D0D89671EABBE294246F1E2D038679D084DB0DFCFD26C4502B217C6EFCA8C66F8AFDE83A65241892CD2B13B4D81328E1A5182502E9E730C4847FFB797D02799FDD268B3D6226198BF87D9558172D4BCFFB4BC54464369A9309488A0C67BB8E99190C66B8E7848E742C8FD5D3491ABDC4B238BCB512E1D56B52B4EB1A8E74C664ABA560C80DF4152243BCCEFE78E51BCCBE29E7BF9867739B97891318C6CE9BAEC007B5B6708DD0C3DFD911AEA5CA552EB03
    +
    encrypted_data = 6CA5FA6974FB55D595863B586A284FE5A15AD986F67F1C5A07491EBABBE64A244E45F46CAF47786FCCD17C3AC5CFD571BAF80F5E4986BB7BAF0AD66E82B1E6E9FA03E6D296F5F77BEB8BEB1A979B1517B5AF46E423F39E38628F06208E6CAD6D38B2C0279A84B7182300DBD2F934B243A78BB5508DDAC482868B2F8B06D8F098BA1BB156C5CB8BEE86EBE4403EAB6DDA387A55D101F1B29216C219ADEE29A637F69178C960B74CBC7D779319D0A660FA2C1855F55BD7D03E03C3E591CDD8174E2B147E15592009F1229098C58D639714D8F63A64F8E3CA699118D5C4472523F22ACE75017DC325A01B93BF983D787285AFD56D80D671677F8BAF3B4A62633FEC3EB4AB9FFC6B80358D7DF6420364BF04628C7CC4485D9A472741E6B88CE100C80B5DB173EBA4B44CD4574E7B052083021D64E8F1D142ECB6EB6255CA9739C6D3475550FF6E30A7D1E0B19A23FA2342DB

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

    Payload (de)serialization:

    set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
    nonce 4, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 20, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Value received from server in Step 2
    g_b 36, 260FE00010035A300F632B557BCF18A927A 4DE8AFFCAFF852DB2AB3F43FF3D2CC1B 902B1126BD4FA49B87DE3F92184EEC68 EBD16345E4D4B33C2816637FA8BECABC 99C6028300E6B9304CB0A182916F6D9C 865619D3993367E8FF6FC4E797C57E65 4A673C8712D4E07A9E64C1B4157C2C96 24DF295B285BB044A45EC45CBC2A1064 9E02B2239072393E6AC72068136B884B BC418E024BF8A8DD12DBB534EFFF235B 5E78AABB524CED3E2C18C607F9832066 AF940BA10E30A299B0AC55E1B45864FA 54A587D7ACE194868027A98F69595725 E1AC03095E37C04861AE41BE642BB924 4619509FB3453CF8325BDB0077AF51AD 276D937F8618EEA693C6A116BF05B02A
    E956AC65
    FE0001006E9707456F57D1A5BA110E87 9B97A146952B760195EEE9B09A4416D1 3A60C4F3DC4F267EFB3EF6009D2E08B3 1E8097391583C3D63C9938D376D10A19 34F2514F4C2938B7B76E3F59DA8C5B20 FF08F1922A37808104CAE3DA3A395AF2 EF5D4C1C9690BCE32066A1A082B88CFC 5086F999AB7E847B4518EEFA8E6C2AB4 E5988C93EC2EED9D264F3D297E722592 1F87A70A7292F564E55F22C21116C312 0ECA708B8171A690CE5E85676695669F 581F702B8D99A42BBD927677AB6AEC82 F714DB0C8096654171A913D91602D458 F2E53BB2689F1D75BAECFAD5702447F6 79C2D326A67FD5A356E236018A4DC1A8 315F5BD35ADDCA421A0DE3BDB4B55E2B
    8DA578E4
    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 = 86E1807DB45ED838284D01E5DF7DE333F35B5B65F70D86204C06FC16442F50CBCFB749AFD9FED3234BBA4C997BEC0AA5761F08125569623021B67DE2811E9892A7D928C517BC678A3169CF3FBCD082A2AD5BA0B3AD667C7290F9361FF85D8C3EB1F404E54540154A56CCBAFBFFDDAD2E700C0B5E92A5274EFA27B825882EB21CEE9CF380CFD7BFD881EC7F20BD65F5022F77A84F0604A70FC3518A4A61E1EE9FFDE9677685C903428128251FAA7A99ADDC490ECE12B4C03055B8DE35B9F5E62F0A64923E3AD8CC7FC5F9B79098D35C5DE38A13C4D69A2BD8DE2EBB0854F533B7164C876DA5C4E804D9F8DCDD9CCC678E7C0F20B9DE86C012CA55A84A3955AFB6
    +
    auth_key = BCEC8676D1BF9942E58451FB59B077B4E1CED8BEA189910E9C4759551612EE1EF1C33ED8DC685B5D2ADD46F4C04DD62A8884F0DA77FE8FA1FD973063F7535AA22D5BF85FAD0D6B856911272DAAE6E8ADA29E2679D2879696AA711F95A225C896DE07F72BF1342ED04F528943537F68C4E12AAEFC79A05BC1ACFB7DE4CCC9B694977D98ED4BDD7971B2CCED07B4F760366A5FAE69121DEB9A79A127B30A965E438831F731EEB0616EC5EB40158F669878E28F54482D859E458B8A3C0DEEA3B817A4236AE729A6A147379F7E98737D00E17BEC1DFF0896F9C11D18394F64F2548E877F7623D7845587FEA12F02FFE2479DBCCB688C2248E036CD0D74C82B956A25
    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 E0 1A CE DE A6 38 67
    -0010 | 34 00 00 00 34 F7 CB 3B F2 FF EB DA 55 A0 62 61
    -0020 | 90 B6 57 AC CD F3 9C 05 C8 97 E4 83 8C 1A 47 33
    -0030 | D9 43 AB 98 93 64 1F B4 14 D2 0C 61 FB F8 BC D0
    -0040 | DF E5 90 21 13 41 D6 1D
    +
    0000 | 00 00 00 00 00 00 00 00 01 6C 44 58 0B A9 38 67
    +0010 | 34 00 00 00 34 F7 CB 3B 88 A0 0C B2 64 2E 0D CC
    +0020 | D6 BD 55 3F 42 43 30 B4 8A 33 80 8D 1D 5B AE E2
    +0030 | 7E 2D 08 4D AB 67 CE D0 EC 44 2B 71 0B 93 7F 95
    +0040 | 1F 3F 2D 57 D0 B3 38 2E

    Payload (de)serialization:

    dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
    message_id 8, 81C480700DEA63867F4D4090009A93867 Message ID generated as specified here » (unixtime() << 32) + (N*4)
    nonce 24, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 40, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Value received from server in Step 2
    encrypted_data 56, 340FE5001008DC5EDF4570B333797D9B0A3 9B2803B5EFDD4DECE3D7305D1A05348C 7EF11BAC05FD42853527D56914DDF9D4 AA5C2A42CEF5493B67ED45605BB297DB 2B2F0AED96B028BA3029F7A3D39C689B 271C6B42A124EA9E82B6B473B844F2DC 8B40E1589E88FA1AD7CB598904E540C6 6B1AE111D26C74C0BA4261FBD313144F 5106940A417E042B2553A55AD456154A D9F6C49D26D7CC7A853561539AD08A59 B1B39D0D89671EABBE294246F1E2D038 679D084DB0DFCFD26C4502B217C6EFCA 8C66F8AFDE83A65241892CD2B13B4D81 328E1A5182502E9E730C4847FFB797D0 2799FDD268B3D6226198BF87D9558172 D4BCFFB4BC54464369A9309488A0C67B B8E99190C66B8E7848E742C8FD5D3491 ABDC4B238BCB512E1D56B52B4EB1A8E7 4C664ABA560C80DF4152243BCCEFE78E 51BCCBE29E7BF9867739B97891318C6C E9BAEC007B5B6708DD0C3DFD911AEA5C
    A552EB03
    FE5001006CA5FA6974FB55D595863B58 6A284FE5A15AD986F67F1C5A07491EBA BBE64A244E45F46CAF47786FCCD17C3A C5CFD571BAF80F5E4986BB7BAF0AD66E 82B1E6E9FA03E6D296F5F77BEB8BEB1A 979B1517B5AF46E423F39E38628F0620 8E6CAD6D38B2C0279A84B7182300DBD2 F934B243A78BB5508DDAC482868B2F8B 06D8F098BA1BB156C5CB8BEE86EBE440 3EAB6DDA387A55D101F1B29216C219AD EE29A637F69178C960B74CBC7D779319 D0A660FA2C1855F55BD7D03E03C3E591 CDD8174E2B147E15592009F1229098C5 8D639714D8F63A64F8E3CA699118D5C4 472523F22ACE75017DC325A01B93BF98 3D787285AFD56D80D671677F8BAF3B4A 62633FEC3EB4AB9FFC6B80358D7DF642 0364BF04628C7CC4485D9A472741E6B8 8CE100C80B5DB173EBA4B44CD4574E7B 052083021D64E8F1D142ECB6EB6255CA 9739C6D3475550FF6E30A7D1E0B19A23
    FA2342DB
    Encrypted client_DH_inner_data generated previously, serialized as a TL byte string
    @@ -817,7 +817,7 @@ 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);< - + - + - +
    message_id 8, 801E01ACEDEA63867016C44580BA93867 Message ID generated as specified here » (unixtime() << 32) + (N*4)
    nonce 24, 16F2FFEBDA55A0626190B657ACCDF39C0588A00CB2642E0DCCD6BD553F424330B4 Value generated by client in Step 1
    server_nonce 40, 16C897E4838C1A4733D943AB9893641FB48A33808D1D5BAEE27E2D084DAB67CED0 Value received from server in Step 2
    new_nonce_hash1 56, 1614D20C61FBF8BCD0DFE590211341D61DEC442B710B937F951F3F2D57D0B3382E 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.