diff --git a/data/web/corefork.telegram.org/method/account.updateColor.html b/data/web/corefork.telegram.org/method/account.updateColor.html index 9daa795d72..7a12b1f442 100644 --- a/data/web/corefork.telegram.org/method/account.updateColor.html +++ b/data/web/corefork.telegram.org/method/account.updateColor.html @@ -106,7 +106,7 @@ 400 COLOR_INVALID -  +The specified color palette ID was invalid. diff --git a/data/web/corefork.telegram.org/method/account.updateProfile.html b/data/web/corefork.telegram.org/method/account.updateProfile.html index 0b436c5f4e..2693e32008 100644 --- a/data/web/corefork.telegram.org/method/account.updateProfile.html +++ b/data/web/corefork.telegram.org/method/account.updateProfile.html @@ -109,11 +109,6 @@ About string too long. -403 -CHAT_WRITE_FORBIDDEN -You can't write in this chat. - - 400 FIRSTNAME_INVALID The first name is invalid. diff --git a/data/web/corefork.telegram.org/method/account.updateStatus.html b/data/web/corefork.telegram.org/method/account.updateStatus.html index d7c805ff5f..42892945af 100644 --- a/data/web/corefork.telegram.org/method/account.updateStatus.html +++ b/data/web/corefork.telegram.org/method/account.updateStatus.html @@ -78,23 +78,6 @@

Result

Bool

-

Possible errors

- - - - - - - - - - - - - - - -
CodeTypeDescription
403CHAT_WRITE_FORBIDDENYou can't write in this chat.

Related pages

boolTrue

The constructor can be interpreted as a booleantrue value.

diff --git a/data/web/corefork.telegram.org/method/messages.requestWebView.html b/data/web/corefork.telegram.org/method/messages.requestWebView.html index 72683b8c39..7df29d1b6d 100644 --- a/data/web/corefork.telegram.org/method/messages.requestWebView.html +++ b/data/web/corefork.telegram.org/method/messages.requestWebView.html @@ -128,6 +128,28 @@

Result

WebViewResult

+

Possible errors

+ + + + + + + + + + + + + + + + + + + + +
CodeTypeDescription
400BOT_INVALIDThis is not a valid bot.
400PEER_ID_INVALIDThe provided peer id is invalid.

Related pages

Bot menu button

Bots can choose the behavior of the menu button shown next to the text input field.

diff --git a/data/web/corefork.telegram.org/method/messages.sendMedia.html b/data/web/corefork.telegram.org/method/messages.sendMedia.html index 739c88238b..26a744fcca 100644 --- a/data/web/corefork.telegram.org/method/messages.sendMedia.html +++ b/data/web/corefork.telegram.org/method/messages.sendMedia.html @@ -250,6 +250,11 @@ 403 +CHAT_SEND_PLAIN_FORBIDDEN +You can't send non-media (text) messages in this chat. + + +403 CHAT_SEND_POLL_FORBIDDEN You can't send polls in this chat. @@ -355,6 +360,11 @@ 400 +MESSAGE_EMPTY +The provided message is empty. + + +400 MSG_ID_INVALID Invalid message ID provided. @@ -535,6 +545,16 @@ 400 +WEBPAGE_NOT_FOUND +A preview for the specified webpage url could not be generated. + + +400 +WEBPAGE_URL_INVALID +The specified webpage url is invalid. + + +400 YOU_BLOCKED_USER You blocked this user. diff --git a/data/web/corefork.telegram.org/method/messages.sendMessage.html b/data/web/corefork.telegram.org/method/messages.sendMessage.html index 81d5143f1f..425e51cf06 100644 --- a/data/web/corefork.telegram.org/method/messages.sendMessage.html +++ b/data/web/corefork.telegram.org/method/messages.sendMessage.html @@ -341,7 +341,7 @@ 400 REPLY_TO_USER_INVALID -  +The replied-to user is invalid. 400 @@ -376,7 +376,7 @@ 400 STORY_ID_INVALID -  +The specified story ID is invalid. 406 diff --git a/data/web/corefork.telegram.org/method/messages.sendReaction.html b/data/web/corefork.telegram.org/method/messages.sendReaction.html index c940758d33..3ee4bc0c54 100644 --- a/data/web/corefork.telegram.org/method/messages.sendReaction.html +++ b/data/web/corefork.telegram.org/method/messages.sendReaction.html @@ -142,7 +142,7 @@ 400 CUSTOM_REACTIONS_TOO_MANY -  +Too many custom reactions were specified. 400 diff --git a/data/web/corefork.telegram.org/method/messages.sendScreenshotNotification.html b/data/web/corefork.telegram.org/method/messages.sendScreenshotNotification.html index d358949332..f38225d8b6 100644 --- a/data/web/corefork.telegram.org/method/messages.sendScreenshotNotification.html +++ b/data/web/corefork.telegram.org/method/messages.sendScreenshotNotification.html @@ -116,7 +116,7 @@ 400 STORY_ID_INVALID -  +The specified story ID is invalid. 400 diff --git a/data/web/corefork.telegram.org/method/messages.setChatWallPaper.html b/data/web/corefork.telegram.org/method/messages.setChatWallPaper.html index 99d366bbd1..e4f2edd973 100644 --- a/data/web/corefork.telegram.org/method/messages.setChatWallPaper.html +++ b/data/web/corefork.telegram.org/method/messages.setChatWallPaper.html @@ -136,7 +136,7 @@ 400 WALLPAPER_NOT_FOUND -  +The specified wallpaper could not be found. diff --git a/data/web/corefork.telegram.org/method/messages.updateDialogFilter.html b/data/web/corefork.telegram.org/method/messages.updateDialogFilter.html index 7b86d1bd27..d06fc678dd 100644 --- a/data/web/corefork.telegram.org/method/messages.updateDialogFilter.html +++ b/data/web/corefork.telegram.org/method/messages.updateDialogFilter.html @@ -101,7 +101,7 @@ 400 CHATLIST_EXCLUDE_INVALID -  +The specified exclude_peers are invalid. 400 diff --git a/data/web/corefork.telegram.org/method/payments.checkGiftCode.html b/data/web/corefork.telegram.org/method/payments.checkGiftCode.html index 0f6ef770d6..cf39042e3e 100644 --- a/data/web/corefork.telegram.org/method/payments.checkGiftCode.html +++ b/data/web/corefork.telegram.org/method/payments.checkGiftCode.html @@ -90,7 +90,7 @@ 400 GIFT_SLUG_INVALID -  +The specified slug is invalid. diff --git a/data/web/corefork.telegram.org/method/payments.getPaymentForm.html b/data/web/corefork.telegram.org/method/payments.getPaymentForm.html index d7c4f87850..3849cd070d 100644 --- a/data/web/corefork.telegram.org/method/payments.getPaymentForm.html +++ b/data/web/corefork.telegram.org/method/payments.getPaymentForm.html @@ -99,9 +99,24 @@ 400 +BOOST_PEER_INVALID +The specified boost_peer is invalid. + + +400 MESSAGE_ID_INVALID The provided message id is invalid. + +400 +SLUG_INVALID +The specified invoice slug is invalid. + + +400 +UNTIL_DATE_INVALID +Invalid until date provided. + diff --git a/data/web/corefork.telegram.org/method/premium.applyBoost.html b/data/web/corefork.telegram.org/method/premium.applyBoost.html index dcec80e84e..a554469644 100644 --- a/data/web/corefork.telegram.org/method/premium.applyBoost.html +++ b/data/web/corefork.telegram.org/method/premium.applyBoost.html @@ -99,9 +99,19 @@ 400 +BOOSTS_EMPTY +No boost slots were specified. + + +400 PEER_ID_INVALID The provided peer id is invalid. + +400 +SLOTS_EMPTY +The specified slot list is empty. +

Related pages

diff --git a/data/web/corefork.telegram.org/method/premium.getBoostsList.html b/data/web/corefork.telegram.org/method/premium.getBoostsList.html index f741d10429..bcc1b93a1e 100644 --- a/data/web/corefork.telegram.org/method/premium.getBoostsList.html +++ b/data/web/corefork.telegram.org/method/premium.getBoostsList.html @@ -109,6 +109,11 @@ 400 +CHAT_ADMIN_REQUIRED +You must be an admin in this chat to do this. + + +400 PEER_ID_INVALID The provided peer id is invalid. diff --git a/data/web/corefork.telegram.org/method/stories.getStoryViewsList.html b/data/web/corefork.telegram.org/method/stories.getStoryViewsList.html index c5a917d812..f5300f58d5 100644 --- a/data/web/corefork.telegram.org/method/stories.getStoryViewsList.html +++ b/data/web/corefork.telegram.org/method/stories.getStoryViewsList.html @@ -127,6 +127,11 @@ PEER_ID_INVALID The provided peer id is invalid. + +400 +STORY_ID_INVALID +The specified story ID is invalid. +

Related pages

diff --git a/data/web/corefork.telegram.org/method/stories.readStories.html b/data/web/corefork.telegram.org/method/stories.readStories.html index 6a7beb33fa..ed046a96c9 100644 --- a/data/web/corefork.telegram.org/method/stories.readStories.html +++ b/data/web/corefork.telegram.org/method/stories.readStories.html @@ -101,6 +101,11 @@ PEER_ID_INVALID The provided peer id is invalid. + +400 +STORIES_NEVER_CREATED +  +

Related pages

diff --git a/data/web/corefork.telegram.org/method/stories.sendStory.html b/data/web/corefork.telegram.org/method/stories.sendStory.html index 8ec4e28d03..f05c7886c9 100644 --- a/data/web/corefork.telegram.org/method/stories.sendStory.html +++ b/data/web/corefork.telegram.org/method/stories.sendStory.html @@ -206,7 +206,7 @@ 400 VENUE_ID_INVALID -  +The specified venue ID is invalid. 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 d7a5ab7074..68ace1b91d 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 18 78 03 00 C8 32 87 65
-0010 | 14 00 00 00 F1 8E 7E BE 7E 79 38 C1 4A B7 30 24
-0020 | C3 94 DB C0 E8 0A 6B 5D
+
0000 | 00 00 00 00 00 00 00 00 54 1C 09 00 09 4F 87 65
+0010 | 14 00 00 00 F1 8E 7E BE A1 D0 50 58 4C B7 93 A7
+0020 | 9A 25 1D C4 34 D9 E6 C6

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 FC A6 AD C8 32 87 65
-0010 | 78 00 00 00 63 24 16 05 7E 79 38 C1 4A B7 30 24
-0020 | C3 94 DB C0 E8 0A 6B 5D DD F3 95 25 25 82 2D BE
-0030 | 37 BB F1 5E 0D C8 A8 60 08 28 E2 34 CE A3 7B CB
-0040 | 47 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 98 97 00 0A 4F 87 65
+0010 | 64 00 00 00 63 24 16 05 A1 D0 50 58 4C B7 93 A7
+0020 | 9A 25 1D C4 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08
+0030 | F3 47 27 D8 7F 16 88 3C 08 1D 5A 9F 5F 40 CF 9C
+0040 | 09 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 = 2945975168364432199
-

Decompose into 2 prime cofactors p < q: 2945975168364432199 = 1479472661 * 1991233259

-
p = 1479472661
-q = 1991233259
+
pq = 2115178206461926409
+

Decompose into 2 prime cofactors p < q: 2115178206461926409 = 1264823717 * 1672310677

+
p = 1264823717
+q = 1672310677

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 28 E2 34 CE A3 7B CB 47 00 00 00
-0010 | 04 58 2E F6 15 00 00 00 04 76 AF CE EB 00 00 00
-0020 | 7E 79 38 C1 4A B7 30 24 C3 94 DB C0 E8 0A 6B 5D
-0030 | DD F3 95 25 25 82 2D BE 37 BB F1 5E 0D C8 A8 60
-0040 | EA 18 94 A9 03 E6 FE 90 28 FD BF 7A 08 F3 00 DC
-0050 | B4 24 11 F7 B2 1F AB CF 35 F9 54 5C 32 AB 3D 74
+
0000 | 95 5F F5 A9 08 1D 5A 9F 5F 40 CF 9C 09 00 00 00
+0010 | 04 4B 63 AD A5 00 00 00 04 63 AD 6F 95 00 00 00
+0020 | A1 D0 50 58 4C B7 93 A7 9A 25 1D C4 34 D9 E6 C6
+0030 | 69 FF A0 EA 0B C5 AC 08 F3 47 27 D8 7F 16 88 3C
+0040 | 97 4F F7 44 53 23 58 48 12 A4 81 96 97 1A 8A FF
+0050 | 98 8C 3A 65 16 C7 09 06 81 83 69 57 93 F2 35 20
 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 = 1991233259
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1991233259

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 = 955FF5A90828E234CEA37BCB4700000004582EF6150000000476AFCEEB0000007E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A860EA1894A903E6FE9028FDBF7A08F300DCB42411F7B21FABCF35F9545C32AB3D7402000000
-random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8AF9B3E03D061C0C1FD9113C29439A04A7B2C1B998BA5A02E9DE2807079582B2E1A5EDF6E9D698C2D95780F5F4729F9584DFC05806E97867DB8D8971D9A4C721
+
data = 955FF5A9081D5A9F5F40CF9C09000000044B63ADA50000000463AD6F95000000A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C974FF7445323584812A48196971A8AFF988C3A6516C709068183695793F2352002000000
+random_padding_bytes = E1D17479B26E38705348671BC9D13509EF615573C0BAC08E8066A3DF64AB6A45704B352DEEBB51135AF8C91909D183568A5F2FE80D02CA5354CC5482276909FEC32D1E14CE72A9D338E47F706A9CD0E07A5693F0248A266FC9E3BFB8

And this is the output:

-
encrypted_data = C2DA62C8601D370E922F5F7CBCCA4255C84910E5DDE9B562336BBBB7215B94E2F82C9C288C64F48FABE0140A5138C54F42879C21F7383FEC315989EB1EA95010EC6E78130037C490D40C3405EB69DD9A54FD9A1AB2F14D5086E8321E7D150E62F42D0B87C8A6C5AE07C9B53A21EB868509D4C96B5C13C45C230B58CAB63F7FC77A3A717CFCFF6D41DA5C6DF2EF6DBABCFB98370F515D00E4888F2D4B5DE2F1A0E893AA77E2E42F040A64ECF2AC0AE536CB3DE13BF17D7BC9AAACFB69FB28DAADBB198D4ED7FC512F50CC864758C1237B96BF59E2C8201F6C91223DE666B3B74541DA315EA71E5E7817535514BD45A258D49789650A8FBF156C996D00303F5543
+
encrypted_data = BE04CA7B6C62E8531B3DCE1D486F9C5C64CC3966FFE6ED7946ABE52720D7D568ECD36C2AD390BF2EC2F0B652A6259BF80F3544D38C7CE718E83522DED2DCD3121EBA30B8D89079BCB6603840C41C63C5DDA14DEE1BC2306D14F1D9D3E0D5B5D252B44A187CAA9815E302430FFC6E4D60DF59A3E038A7C67CB2C0004C5483EF1176F2BEC1D5F3E1C1137F368D3785F8CF3A184C56E0FB62F98917BD888928565A4138534E84BC1113F38B04E14A3ACDD4158B4517FA6D89E8257861705B7D7F939491B5CDE35FD32B921773BE6B99701F35C76A6BC8FC7F7AAE11C674505B79B8916B8370CCFCEFE61DDA7FB5BEAD720826A8D0A984294B68B1E1D4FEF55C027F

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

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, 818780300C8328765541C0900094F8765 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Random number
message_id 8, 801FCA6ADC8328765019897000A4F8765 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 478000000 (120 in decimal)64000000 (100 in decimal) Message body length
nonce 24, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 40, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Server-generated random number
pq 56, 120828E234CEA37BCB47000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2945975168364432199
081D5A9F5F40CF9C09000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2115178206461926409
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 120828E234CEA37BCB47000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2945975168364432199
081D5A9F5F40CF9C09000000
TL byte deserialization
=> bigendian conversion to decimal
=> 2115178206461926409
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 804582EF615000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1479472661
044B63ADA5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1264823717
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 80476AFCEEB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1991233259
0463AD6F95000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1672310677
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 48, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Value received from server in Step 2
new_nonce 64, 32EA1894A903E6FE9028FDBF7A08F300DC B42411F7B21FABCF35F9545C32AB3D74974FF7445323584812A48196971A8AFF 988C3A6516C709068183695793F23520 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8 - + @@ -363,25 +363,25 @@ random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8 - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8 - + @@ -402,47 +402,47 @@ random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 88C680800C8328765C41F0D000A4F8765 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 40, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Value received from server in Step 2
p 56, 804582EF615000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1479472661
044B63ADA5000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1264823717
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 80476AFCEEB000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1991233259
0463AD6F95000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1672310677
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE000100C2DA62C8601D370E922F5F7C BCCA4255C84910E5DDE9B562336BBBB7 215B94E2F82C9C288C64F48FABE0140A 5138C54F42879C21F7383FEC315989EB 1EA95010EC6E78130037C490D40C3405 EB69DD9A54FD9A1AB2F14D5086E8321E 7D150E62F42D0B87C8A6C5AE07C9B53A 21EB868509D4C96B5C13C45C230B58CA B63F7FC77A3A717CFCFF6D41DA5C6DF2 EF6DBABCFB98370F515D00E4888F2D4B 5DE2F1A0E893AA77E2E42F040A64ECF2 AC0AE536CB3DE13BF17D7BC9AAACFB69 FB28DAADBB198D4ED7FC512F50CC8647 58C1237B96BF59E2C8201F6C91223DE6 66B3B74541DA315EA71E5E7817535514 BD45A258D49789650A8FBF156C996D00
303F5543
FE000100BE04CA7B6C62E8531B3DCE1D 486F9C5C64CC3966FFE6ED7946ABE527 20D7D568ECD36C2AD390BF2EC2F0B652 A6259BF80F3544D38C7CE718E83522DE D2DCD3121EBA30B8D89079BCB6603840 C41C63C5DDA14DEE1BC2306D14F1D9D3 E0D5B5D252B44A187CAA9815E302430F FC6E4D60DF59A3E038A7C67CB2C0004C 5483EF1176F2BEC1D5F3E1C1137F368D 3785F8CF3A184C56E0FB62F98917BD88 8928565A4138534E84BC1113F38B04E1 4A3ACDD4158B4517FA6D89E825786170 5B7D7F939491B5CDE35FD32B921773BE 6B99701F35C76A6BC8FC7F7AAE11C674 505B79B8916B8370CCFCEFE61DDA7FB5 BEAD720826A8D0A984294B68B1E1D4FE
F55C027F
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8 - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8 - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 3D1339ACBAC2FAD94051E2552D22E156939320323A0F95E163E5D02A8

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

-
encrypted_answer = 117B1270279DF6385371046906D77C00742E6854D6A81412424FAD5CB9633D682153D9797A4C4F10EF56616B9C52AA5D03B84DA72739155ABCD06A24C3835CA3F40D31226FD8B32ABFFE68AA4E197B91432EED299748B61FB6CBE143A5E7E130DB41C930C879F8FC77980C72B8150216621D53B7312ADE473D5B0AA17992C2B10652E9E8DF20E4663BCB3B2B1C5E3602E4F6CA87F7ECCF33A74928DB8E2FB0C3FF4AF975B05132500993B6630119004D051CB2BA3FCAB28238C88F0A8A91B5B5242DF371B24AEEF1C12D833D493C5F249CE94C4FC1AC1F503CC051EBBBB27C7227FE895694A5A492F3F056ECB75554C7F39614B6B6C6DDCABB4A863265A36CECB306C8F2EF52AED8AECD3DAD043B1CE7F1D8BCF40FB3B3AAAFC7BBEE9A326736EF1A87FA0ABB18BDD1AFACAADB0DCF23D59D0A6AF90E76A0859814495E76D2D99B230F469EFDF3D14A04D2D48D89232E98DE507921D44E580013F7671C9A127AE3EB4306466771C2019E88C60FE162301905CD8555B4D380F26A1093D7BE0527105ADEEE7ACDAF3A91562EF03F76B0C98173AE1E1860D7B72C1D1FBF208DFC02690D17813A26A2B47BB8C36A26FC41010D2E2B79FFF6C3D10DB06A66CACCB70DF15D4A516ADA5A7E95C1D0B0FCAB520A6B739206E55B68C5E6189051FFB446673280A4BB62B5E3FC0F70406BD6CA60D64E46809843665752E36DFF409238074FF57DC9A4A28876F2B4FF6A5497A6F3BA82B9138BB8120D2E7796300982C5F1B882DDFD03DCE783E68905E7BBC2106EED65A869713F6D4D5D2A602FED31A92F31E26F46AB1F5B3B71FB0608D13A5A5749
-tmp_aes_key = D28A87C0D70101BB2B10FB424BE653AE8EFB79805727725BD0189841E9004B8A
-tmp_aes_iv = FE8486D1C9DBCCC51BC4D8AFF6F9581FB6A086BC2F678552CF66D37BEA1894A9
+
encrypted_answer = 23BF4EBA09FED0746397040616B47A0D59404139FD9D206F23F35BD803CC0CA806C72984FCE14F450D1C358BDE23FCADCBC48F7DCBCEB8BDE2A3B074E8EBA2FEDEB7C97D936E7B695162F6B137BBA8CE5292A12BDA8DFAA50129CA99A489B163A28811FC8FEC1A00D748C984EDDD71F905AAD844190B4C17AC4B4EE3743224B53D0B67AC027A58D203F6E7C6BA2F8765AF7D2462070D6907C7988013C9742587488721337BE0CEE777B976F8011866D9EE4DB2ACA441B333492D32C8704F0185DFEF0810B6C36FDFEE6902F055663D9922C6783F86149C8A51BEF0EEA9816E79950853AD7C4DD56DC4ECDA7D8B08E8EE981633EE5594504DC62B8BB5A1AC16D7BDD0BEEFEF60B46D06535705A9E90BEAA9B5B7F28C0F67CB8FD2B99CC3478FD8CC755D5C2BDF28DFA6B4EEBCF24CA61F3B3CF837D5E6393ECE79E4F0472A004AE14F4B339DEDB37B28F6A15678B945E21E1FCE2D4B65459B6397359A3277455429A1A107CA346AC34ED307BC7D615029100C87E931EBB097A2F1F32E762637725361994BC69B973A7BA78B6B6754FCC4AE0F24F3230F9559D8D497ED4523BE8CC2723B2450E1B001569AE508C75B8527A3562F592107FD2DD513366AC86BAB2C95FFBD2B95C2E34CF02E67E65094D3347D8AC3FB878B5F43DFE5384C0DD20273759C060991CA6532DA5FCD8D6FC3BD4E679F53490ED26AD38A7C60382964D936BC0701150E4866948D7E34D914B11A2BBC2DA42442D9076533FF84D34C9D6D0DD5B5D9C04766A1BAFE96E1919451CEAB40F97F38CDBA0CE4DAAA29700E6900E45F3747644D6B3EA76929EA12C9EB1B34
+tmp_aes_key = CB7D6D9817AD90C5CA0D0C9DE2B6A96777A9DDC44B7D75E8FB68509CF0D6C892
+tmp_aes_iv = E0FADC1731AFFFB59DC98A1B7A8B390C5BDDF383365551EFE75FB469974FF744

Yielding:

-
answer_with_hash = CD620676A7F66F858B7AA1A7160C6423F43E4934BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004F6869C2282055E5119EB1046452FD4C2521575FA300221D0B350A58AE4196B6390518074614F869AD9705B929E15E9F05D1D3283D9FA8E3EF5702C04C3CFE05054266F759596D03F4FA731F74591F5D4B678A2975053C9D5294E879A43B1C8EE613082B7AD1FDABD75FCBE941EE19C2EAAD44BAB132355D509C4A816D9F59B486326899D8D1B5D22B8C6CD15F00040B5950D9ED6E3F8104EEC30DA48A4F5B37DACAC246A842FB9B535E9CD55D001FCC516A662203122F4A141D4B8BF8C8E9D5B1A84BD3F39296172A59420BA2E33729EFA6B78F7F27D53E0A4697490DA040FB730CC5B9D860530C17ACDA40FBFFC0A557D624B7C85D7AE8E75AA39E470540FEC93287653AFE6C493AF0C20F
-answer = BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86003000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001004F6869C2282055E5119EB1046452FD4C2521575FA300221D0B350A58AE4196B6390518074614F869AD9705B929E15E9F05D1D3283D9FA8E3EF5702C04C3CFE05054266F759596D03F4FA731F74591F5D4B678A2975053C9D5294E879A43B1C8EE613082B7AD1FDABD75FCBE941EE19C2EAAD44BAB132355D509C4A816D9F59B486326899D8D1B5D22B8C6CD15F00040B5950D9ED6E3F8104EEC30DA48A4F5B37DACAC246A842FB9B535E9CD55D001FCC516A662203122F4A141D4B8BF8C8E9D5B1A84BD3F39296172A59420BA2E33729EFA6B78F7F27D53E0A4697490DA040FB730CC5B9D860530C17ACDA40FBFFC0A557D624B7C85D7AE8E75AA39E470540FEC93287653AFE6C493AF0C20F
+
answer_with_hash = F1370A9F5C98174D45C7879701005F13FE5E9519BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010087F03ADD09F978C37CBD8F34AE67093243963588D7107B423BE28877BFFFC7B2195A0A6A6774A6F5AC2627662A6BE12E3D15CFD80CF99C93B30BABAD76C9EDFB258E0345BBC3D9A246DBB217382C18DB7E1CB04949DEB10C8C4CA8F7AB67E6085993EF69290147448F429B412D07CD3E79B47F5EA5DB8ED01D5A0DAF0DBF70BEE9E64150D2EC06DA395081BE7D2AF9195099C97562148FD9493CB12426096A32214833EE2018423FF054B49127A89C914A2D4D84D6702FD0330E7D5C36D81110CDD5B5007F44E686E534A58536BF0DD84B17A01C0A50FCDD7F24283ECFD030508B65490D993E703D1F79A5FA9CB0FAB30FD0EDD953491D84E25D8F055C86B15F0A4F87651B5929D26FD657AC
+answer = BA0D89B5A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010087F03ADD09F978C37CBD8F34AE67093243963588D7107B423BE28877BFFFC7B2195A0A6A6774A6F5AC2627662A6BE12E3D15CFD80CF99C93B30BABAD76C9EDFB258E0345BBC3D9A246DBB217382C18DB7E1CB04949DEB10C8C4CA8F7AB67E6085993EF69290147448F429B412D07CD3E79B47F5EA5DB8ED01D5A0DAF0DBF70BEE9E64150D2EC06DA395081BE7D2AF9195099C97562148FD9493CB12426096A32214833EE2018423FF054B49127A89C914A2D4D84D6702FD0330E7D5C36D81110CDD5B5007F44E686E534A58536BF0DD84B17A01C0A50FCDD7F24283ECFD030508B65490D993E703D1F79A5FA9CB0FAB30FD0EDD953491D84E25D8F055C86B15F0A4F87651B5929D26FD657AC

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 7E 79 38 C1 4A B7 30 24 C3 94 DB C0
-0010 | E8 0A 6B 5D DD F3 95 25 25 82 2D BE 37 BB F1 5E
-0020 | 0D C8 A8 60 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 A1 D0 50 58 4C B7 93 A7 9A 25 1D C4
+0010 | 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08 F3 47 27 D8
+0020 | 7F 16 88 3C 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 = BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86
 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 | 4F 68 69 C2 28 20 55 E5 11 9E B1 04 64 52 FD 4C
-0140 | 25 21 57 5F A3 00 22 1D 0B 35 0A 58 AE 41 96 B6
-0150 | 39 05 18 07 46 14 F8 69 AD 97 05 B9 29 E1 5E 9F
-0160 | 05 D1 D3 28 3D 9F A8 E3 EF 57 02 C0 4C 3C FE 05
-0170 | 05 42 66 F7 59 59 6D 03 F4 FA 73 1F 74 59 1F 5D
-0180 | 4B 67 8A 29 75 05 3C 9D 52 94 E8 79 A4 3B 1C 8E
-0190 | E6 13 08 2B 7A D1 FD AB D7 5F CB E9 41 EE 19 C2
-01A0 | EA AD 44 BA B1 32 35 5D 50 9C 4A 81 6D 9F 59 B4
-01B0 | 86 32 68 99 D8 D1 B5 D2 2B 8C 6C D1 5F 00 04 0B
-01C0 | 59 50 D9 ED 6E 3F 81 04 EE C3 0D A4 8A 4F 5B 37
-01D0 | DA CA C2 46 A8 42 FB 9B 53 5E 9C D5 5D 00 1F CC
-01E0 | 51 6A 66 22 03 12 2F 4A 14 1D 4B 8B F8 C8 E9 D5
-01F0 | B1 A8 4B D3 F3 92 96 17 2A 59 42 0B A2 E3 37 29
-0200 | EF A6 B7 8F 7F 27 D5 3E 0A 46 97 49 0D A0 40 FB
-0210 | 73 0C C5 B9 D8 60 53 0C 17 AC DA 40 FB FF C0 A5
-0220 | 57 D6 24 B7 C8 5D 7A E8 E7 5A A3 9E 47 05 40 FE
-0230 | C9 32 87 65
+0130 | 87 F0 3A DD 09 F9 78 C3 7C BD 8F 34 AE 67 09 32 +0140 | 43 96 35 88 D7 10 7B 42 3B E2 88 77 BF FF C7 B2 +0150 | 19 5A 0A 6A 67 74 A6 F5 AC 26 27 66 2A 6B E1 2E +0160 | 3D 15 CF D8 0C F9 9C 93 B3 0B AB AD 76 C9 ED FB +0170 | 25 8E 03 45 BB C3 D9 A2 46 DB B2 17 38 2C 18 DB +0180 | 7E 1C B0 49 49 DE B1 0C 8C 4C A8 F7 AB 67 E6 08 +0190 | 59 93 EF 69 29 01 47 44 8F 42 9B 41 2D 07 CD 3E +01A0 | 79 B4 7F 5E A5 DB 8E D0 1D 5A 0D AF 0D BF 70 BE +01B0 | E9 E6 41 50 D2 EC 06 DA 39 50 81 BE 7D 2A F9 19 +01C0 | 50 99 C9 75 62 14 8F D9 49 3C B1 24 26 09 6A 32 +01D0 | 21 48 33 EE 20 18 42 3F F0 54 B4 91 27 A8 9C 91 +01E0 | 4A 2D 4D 84 D6 70 2F D0 33 0E 7D 5C 36 D8 11 10 +01F0 | CD D5 B5 00 7F 44 E6 86 E5 34 A5 85 36 BF 0D D8 +0200 | 4B 17 A0 1C 0A 50 FC DD 7F 24 28 3E CF D0 30 50 +0210 | 8B 65 49 0D 99 3E 70 3D 1F 79 A5 FA 9C B0 FA B3 +0220 | 0F D0 ED D9 53 49 1D 84 E2 5D 8F 05 5C 86 B1 5F +0230 | 0A 4F 87 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, 80164676BC93287650194DFA90A4F8765 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4C8020000 (712 in decimal)D0020000 (720 in decimal) Message body length
nonce 24, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 40, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Value received from server in Step 2
encrypted_answer 56, 596FE500200117B1270279DF63853710469 06D77C00742E6854D6A81412424FAD5C B9633D682153D9797A4C4F10EF56616B 9C52AA5D03B84DA72739155ABCD06A24 C3835CA3F40D31226FD8B32ABFFE68AA 4E197B91432EED299748B61FB6CBE143 A5E7E130DB41C930C879F8FC77980C72 B8150216621D53B7312ADE473D5B0AA1 7992C2B10652E9E8DF20E4663BCB3B2B 1C5E3602E4F6CA87F7ECCF33A74928DB 8E2FB0C3FF4AF975B05132500993B663 0119004D051CB2BA3FCAB28238C88F0A 8A91B5B5242DF371B24AEEF1C12D833D 493C5F249CE94C4FC1AC1F503CC051EB BBB27C7227FE895694A5A492F3F056EC B75554C7F39614B6B6C6DDCABB4A8632 65A36CECB306C8F2EF52AED8AECD3DAD 043B1CE7F1D8BCF40FB3B3AAAFC7BBEE 9A326736EF1A87FA0ABB18BDD1AFACAA DB0DCF23D59D0A6AF90E76A085981449 5E76D2D99B230F469EFDF3D14A04D2D4 8D89232E98DE507921D44E580013F767 1C9A127AE3EB4306466771C2019E88C6 0FE162301905CD8555B4D380F26A1093 D7BE0527105ADEEE7ACDAF3A91562EF0 3F76B0C98173AE1E1860D7B72C1D1FBF 208DFC02690D17813A26A2B47BB8C36A 26FC41010D2E2B79FFF6C3D10DB06A66 CACCB70DF15D4A516ADA5A7E95C1D0B0 FCAB520A6B739206E55B68C5E6189051 FFB446673280A4BB62B5E3FC0F70406B D6CA60D64E46809843665752E36DFF40 9238074FF57DC9A4A28876F2B4FF6A54 97A6F3BA82B9138BB8120D2E77963009 82C5F1B882DDFD03DCE783E68905E7BB C2106EED65A869713F6D4D5D2A602FED 31A92F31E26F46AB1F5B3B71FB0608D1
3A5A5749
FE50020023BF4EBA09FED07463970406 16B47A0D59404139FD9D206F23F35BD8 03CC0CA806C72984FCE14F450D1C358B DE23FCADCBC48F7DCBCEB8BDE2A3B074 E8EBA2FEDEB7C97D936E7B695162F6B1 37BBA8CE5292A12BDA8DFAA50129CA99 A489B163A28811FC8FEC1A00D748C984 EDDD71F905AAD844190B4C17AC4B4EE3 743224B53D0B67AC027A58D203F6E7C6 BA2F8765AF7D2462070D6907C7988013 C9742587488721337BE0CEE777B976F8 011866D9EE4DB2ACA441B333492D32C8 704F0185DFEF0810B6C36FDFEE6902F0 55663D9922C6783F86149C8A51BEF0EE A9816E79950853AD7C4DD56DC4ECDA7D 8B08E8EE981633EE5594504DC62B8BB5 A1AC16D7BDD0BEEFEF60B46D06535705 A9E90BEAA9B5B7F28C0F67CB8FD2B99C C3478FD8CC755D5C2BDF28DFA6B4EEBC F24CA61F3B3CF837D5E6393ECE79E4F0 472A004AE14F4B339DEDB37B28F6A156 78B945E21E1FCE2D4B65459B6397359A 3277455429A1A107CA346AC34ED307BC 7D615029100C87E931EBB097A2F1F32E 762637725361994BC69B973A7BA78B6B 6754FCC4AE0F24F3230F9559D8D497ED 4523BE8CC2723B2450E1B001569AE508 C75B8527A3562F592107FD2DD513366A C86BAB2C95FFBD2B95C2E34CF02E67E6 5094D3347D8AC3FB878B5F43DFE5384C 0DD20273759C060991CA6532DA5FCD8D 6FC3BD4E679F53490ED26AD38A7C6038 2964D936BC0701150E4866948D7E34D9 14B11A2BBC2DA42442D9076533FF84D3 4C9D6D0DD5B5D9C04766A1BAFE96E191 9451CEAB40F97F38CDBA0CE4DAAA2970 0E6900E45F3747644D6B3EA76929EA12
C9EB1B34
See below
@@ -570,13 +570,13 @@ answer = BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86 - + - + @@ -594,13 +594,13 @@ answer = BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86 - + - + @@ -609,34 +609,34 @@ answer = BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86
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 = CA1889050E305B662888564636B20AD5A2303286A031867498FA652122269ED33E83280AE0F361C44272025BA7D025C0B440FF53A44757FBC41E2D323A483AF708D79E8F6F86E470D081D7E1C856ED766E94DDE74FE4747D69778D6B6A148985BAE39BB00549BAA266ACE81EFE787A5939A87CAED4FDF63F2CF37989313DE8AB825D2A50DCF90066A0665FC9FA43B8ED1728DE6167C9E82FA48AE9BDB9F795E86CB358BD5BC0DB7A03E89F49067E4C083829615983DE7A9EA75A1A22238FFC551A262D53E976BE695929031E193C5C134214C0213167E5969689CD33F3C08D038396554631E29B7EDF6F7B6686DC86CE6938CCF17B4D02818CB34561D8C8467C
+
b = 20A03DED499A18AE912DCD0BAEF0F391C4C28F9F901EF3031C10F5FD2364D223312153A7A51D2FC62044AD600D31AC7973C0D93E4CDA2741DEEE9F50FE0D83D317396270DB47415034155DC3C701B3F508C0542858921CE84FC7E0A338D8D8CD6D31F5E4DD959328443067D8B536C869A5E221C2DF17A1BE81FA5113A4E04934E924967BD7EC04B2E80E3ABFDC6FD13BFF7D2B3A075CC6B0DC9DAA1752E95926166A30A47C9EE96265F78FD5FFA1E18C0A346F5A139003A7A34731A3D394E54396D5CD3A97684303D1B0A083969673903D744E99EF19328C1DB743D2C8D86EE3C259E460F44AAD04F3E2E561FDC550DEE81E1ADD839FA23DADE591CDFB6A5200

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

-
g_b = B5C07CAB67304C7EC341D6CF79F231ABC9F3BBD72E3318586C426D7D2775435F37991FF37E915CA3338B3A7ABCEF1501E5FA3160278DC36184E202559A0F392DF0D8B3D44701682619BC8A7AA42166C83AC3FFCA427C9437F56B3D98FF04F64C7BD068B479FE88599473DEEB0638A61CC4F22343838CDD0736B384E6127D0C000FB0F1B5C283620F855BB51FEEA8D5C1F75A00FA90F063C0560EA66246CAB1045EEC355652442C4D85CDE65FF1D3A17AF09461C893FD17080D32B8ED50BCEF57A82B5C0D343CEAAECA94CECB2996923876F2CC3FF1BE2243A0EDC455B68ACB25B66CCB6BDC4CC668E68DC29F64A7DA6FDEACB7D9A837E26AE46B77B852495D71
+
g_b = 65F6C6F42E720D4A1EE898D1195C970DA2ADEB0460D361AE413E7AFF5109CAD730C3216D0067078A740B704D66AD80FA0869B86A50AE4D2C9D1050EA2CFBA8EBDB88403B70049ED0EB1F54D550A4A8FC877A0A682EBF7F62BB3230041131FFAFDE91E5CBE1F22EBE141332E20D5658C7BFDBC3DEAC5875637BED83FE7C2C800DF6FC87D89149F33150FCD96338DBE8E98DFF4D9FA5E6EE718CFE76CE3721AAD9B4667109C855AF0D04D41A5CC8D6131ABD7511B3E04010532DFE8D42B8085B7BD8180EED3DD134B5B018B81DAF086495210524EB8F6615077FA71C9A8EB2110757548347DEB2277CB464328E2A982D5FCEB5155587910485282CE77084D56D3B
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 20, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Value received from server in Step 2
g_a 300, 260FE0001004F6869C2282055E5119EB104 6452FD4C2521575FA300221D0B350A58 AE4196B6390518074614F869AD9705B9 29E15E9F05D1D3283D9FA8E3EF5702C0 4C3CFE05054266F759596D03F4FA731F 74591F5D4B678A2975053C9D5294E879 A43B1C8EE613082B7AD1FDABD75FCBE9 41EE19C2EAAD44BAB132355D509C4A81 6D9F59B486326899D8D1B5D22B8C6CD1 5F00040B5950D9ED6E3F8104EEC30DA4 8A4F5B37DACAC246A842FB9B535E9CD5 5D001FCC516A662203122F4A141D4B8B F8C8E9D5B1A84BD3F39296172A59420B A2E33729EFA6B78F7F27D53E0A469749 0DA040FB730CC5B9D860530C17ACDA40 FBFFC0A557D624B7C85D7AE8E75AA39E
470540FE
FE00010087F03ADD09F978C37CBD8F34 AE67093243963588D7107B423BE28877 BFFFC7B2195A0A6A6774A6F5AC262766 2A6BE12E3D15CFD80CF99C93B30BABAD 76C9EDFB258E0345BBC3D9A246DBB217 382C18DB7E1CB04949DEB10C8C4CA8F7 AB67E6085993EF69290147448F429B41 2D07CD3E79B47F5EA5DB8ED01D5A0DAF 0DBF70BEE9E64150D2EC06DA395081BE 7D2AF9195099C97562148FD9493CB124 26096A32214833EE2018423FF054B491 27A89C914A2D4D84D6702FD0330E7D5C 36D81110CDD5B5007F44E686E534A585 36BF0DD84B17A01C0A50FCDD7F24283E CFD030508B65490D993E703D1F79A5FA 9CB0FAB30FD0EDD953491D84E25D8F05
5C86B15F
g_a diffie-hellman parameter
server_time 560, 4C9328765 (1703359177 in decimal)0A4F8765 (1703366410 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86 - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B57E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A86

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 = 54B643667E7938C14AB73024C394DBC0E80A6B5DDDF3952525822DBE37BBF15E0DC8A8600000000000000000FE000100B5C07CAB67304C7EC341D6CF79F231ABC9F3BBD72E3318586C426D7D2775435F37991FF37E915CA3338B3A7ABCEF1501E5FA3160278DC36184E202559A0F392DF0D8B3D44701682619BC8A7AA42166C83AC3FFCA427C9437F56B3D98FF04F64C7BD068B479FE88599473DEEB0638A61CC4F22343838CDD0736B384E6127D0C000FB0F1B5C283620F855BB51FEEA8D5C1F75A00FA90F063C0560EA66246CAB1045EEC355652442C4D85CDE65FF1D3A17AF09461C893FD17080D32B8ED50BCEF57A82B5C0D343CEAAECA94CECB2996923876F2CC3FF1BE2243A0EDC455B68ACB25B66CCB6BDC4CC668E68DC29F64A7DA6FDEACB7D9A837E26AE46B77B852495D71
-padding = BBA8B20E4238251F949799DA
-tmp_aes_key = D28A87C0D70101BB2B10FB424BE653AE8EFB79805727725BD0189841E9004B8A
-tmp_aes_iv = FE8486D1C9DBCCC51BC4D8AFF6F9581FB6A086BC2F678552CF66D37BEA1894A9
+
data = 54B64366A1D050584CB793A79A251DC434D9E6C669FFA0EA0BC5AC08F34727D87F16883C0000000000000000FE00010065F6C6F42E720D4A1EE898D1195C970DA2ADEB0460D361AE413E7AFF5109CAD730C3216D0067078A740B704D66AD80FA0869B86A50AE4D2C9D1050EA2CFBA8EBDB88403B70049ED0EB1F54D550A4A8FC877A0A682EBF7F62BB3230041131FFAFDE91E5CBE1F22EBE141332E20D5658C7BFDBC3DEAC5875637BED83FE7C2C800DF6FC87D89149F33150FCD96338DBE8E98DFF4D9FA5E6EE718CFE76CE3721AAD9B4667109C855AF0D04D41A5CC8D6131ABD7511B3E04010532DFE8D42B8085B7BD8180EED3DD134B5B018B81DAF086495210524EB8F6615077FA71C9A8EB2110757548347DEB2277CB464328E2A982D5FCEB5155587910485282CE77084D56D3B
+padding = 20089454DE689556049E0E6C
+tmp_aes_key = CB7D6D9817AD90C5CA0D0C9DE2B6A96777A9DDC44B7D75E8FB68509CF0D6C892
+tmp_aes_iv = E0FADC1731AFFFB59DC98A1B7A8B390C5BDDF383365551EFE75FB469974FF744

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 = 73FF308F4675402329FE202B4DEB8B710166302B2CA230CB60A89B0CA23BFD830D677F3D6AC21A9C5628C3D4F0D804F59A20273A9D85A3A1C83D2AC464066A1DFED37E2862BB9AB3D5D3871AA24B25F2CC07B387A2B6B0D4A947C329E57EF41FCE8DE2E0456BB90DD239A8E5A9324898FFE5F125750B29BA6943A491417A8C50DD5E8E47AA23F720759373B1527BE9D593A85F82DA527AAA4E361B1F2EFDA6BA392171FEAB13E0D09B43E7C626DB105E2DF116A384042B9DE5ECFF08795DBAC1AF0B6268783AFB889A49A2510D94079FB7EB9A25F86070BADD3AB3644C252771EB153A742F8D4CD20248843510EFFDADC498590AD6258C0381EE84987DD714B7804DF6AFEA76A7E8CD656ACE90C10260F0BAD3ABFF4466FD726E2E76E0CBBC8BF759C9C243C589CDED5389602C870A006D0B58C84D3DE8C01569D53F9489973945AF5AB6E5869CB76311B78F147359CE
+
encrypted_data = 23A72F1531023903698D2F7F28D09832154B6EECBA016FF7A223B00CA85B4CB68A0C2A0085D4A909E00F5933443E3FA2B4783151392C5733B640594C4CE541F26850B4499DE1F0E35406A2CEE3E23D7C3C26C19AB41E589CCCEC618FD53DBCA65D8479FA43D0521173AACE311B6A1D0BF0BF4209B60C1C04F45BA4FC58AF15D779B00B6B3136B5158D04CAAA34633524EC69827623DC62DD417F422CC858A370963DDE17CA5EFAAA07D2ECDFD3D786D2DC3AA4EEC74C30B4663131A30B09AA4AFD44D36ECD397ED1EDD99C8F02725047B5821C87F4CEA539A970C6AEDB7A2AE8B18C0D22AF538466F0C8224256DEE4CBACE4ED1EE78758E03275DE34AA47D4EAB9FF253F3FAEA05DB754A4C4F1D0EA8141D3B599DE5DA06858889FE00625F5F0C95B70E2F72CF024987B49C9BCC958CBEE3010F70AF6E914D7FDF84706C60FEAA6DBA643153792712D0E5305C94AF5C6

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 20, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Value received from server in Step 2
g_b 36, 260FE000100B5C07CAB67304C7EC341D6CF 79F231ABC9F3BBD72E3318586C426D7D 2775435F37991FF37E915CA3338B3A7A BCEF1501E5FA3160278DC36184E20255 9A0F392DF0D8B3D44701682619BC8A7A A42166C83AC3FFCA427C9437F56B3D98 FF04F64C7BD068B479FE88599473DEEB 0638A61CC4F22343838CDD0736B384E6 127D0C000FB0F1B5C283620F855BB51F EEA8D5C1F75A00FA90F063C0560EA662 46CAB1045EEC355652442C4D85CDE65F F1D3A17AF09461C893FD17080D32B8ED 50BCEF57A82B5C0D343CEAAECA94CECB 2996923876F2CC3FF1BE2243A0EDC455 B68ACB25B66CCB6BDC4CC668E68DC29F 64A7DA6FDEACB7D9A837E26AE46B77B8
52495D71
FE00010065F6C6F42E720D4A1EE898D1 195C970DA2ADEB0460D361AE413E7AFF 5109CAD730C3216D0067078A740B704D 66AD80FA0869B86A50AE4D2C9D1050EA 2CFBA8EBDB88403B70049ED0EB1F54D5 50A4A8FC877A0A682EBF7F62BB323004 1131FFAFDE91E5CBE1F22EBE141332E2 0D5658C7BFDBC3DEAC5875637BED83FE 7C2C800DF6FC87D89149F33150FCD963 38DBE8E98DFF4D9FA5E6EE718CFE76CE 3721AAD9B4667109C855AF0D04D41A5C C8D6131ABD7511B3E04010532DFE8D42 B8085B7BD8180EED3DD134B5B018B81D AF086495210524EB8F6615077FA71C9A 8EB2110757548347DEB2277CB464328E 2A982D5FCEB5155587910485282CE770
84D56D3B
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 = 939D202589036350FD00600C0CC822E3065B4AEC892004714CE49FC098254F73A5A909116A35D2543E56A2908694701F0E05D1A7FB76D72E5A4D004DA6B559B714ECE285DC49E82704EAA3DBA24983F3E626FB134DEA02B41DEF75EDEE8F0C4DC5EEBC807365068F6CB5BD24FF2B5847F9C8DB65CE658F3839E553AADAFF64DF3281CA3B8D27DA8850E80A5B211951C0491D6A57FF6F2A4DB59652EBE8FB7BD9B03A6214D673E4B517FA0A827D2AB2079B7CBF8B938254C13A95F4331495D2FCB449821FAC4D3A07BA2A2E2C22B0B718B8FFF5E872A19CF20C784E8376705CF2C20257A1AD3BF3FFCE25B84A69FD6D006AEDD3F9F5D72C5DD2EB56ABFD7EFCBF
+
auth_key = 621E2237406242E39078280AC35DB0AD5A959E560511A96DB02B62103F55AA27B967D7249C0A5F7AB666CD010A57E5D997A495E9824D706FE54173DFDA3A3B41C05E39134F97E7E042DFFCC2161D3DC54DC37857C85DFF33C437D00B9BC995599DEF9827B18FFB5DDB42B905C86E0EAD2F4767B174456B36A42AB581BCDC11E4AEF282A8B8FF04374C07A0A1694B7738A703E4D085030432EDC5E5EAF6BA060FE17AC628049671CF2E555272D5BBB863F2B2355110C8071C746AB4465F10A8BA9BB105DF755AF82B47F991B8EAC10146638623534A05FDDF100B2653A25F8B89594D2575699A6091A0201C2C54CDEEB7481EB8B355B9A9811B31BE2DE24C98B7
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 D0 C0 BC C9 32 87 65
-0010 | 6C 00 00 00 34 F7 CB 3B 7E 79 38 C1 4A B7 30 24
-0020 | C3 94 DB C0 E8 0A 6B 5D DD F3 95 25 25 82 2D BE
-0030 | 37 BB F1 5E 0D C8 A8 60 04 F9 91 DD 4F 67 9B 4C
-0040 | A2 E7 C7 3B 00 19 4D EC
+
0000 | 00 00 00 00 00 00 00 00 01 10 34 FE 0A 4F 87 65
+0010 | 94 00 00 00 34 F7 CB 3B A1 D0 50 58 4C B7 93 A7
+0020 | 9A 25 1D C4 34 D9 E6 C6 69 FF A0 EA 0B C5 AC 08
+0030 | F3 47 27 D8 7F 16 88 3C B8 12 43 C5 4D B8 F0 71
+0040 | 95 87 E0 B9 73 A2 11 4D

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 858330D00C9328765C81F0D000A4F8765 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 40, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Value received from server in Step 2
encrypted_data 56, 340FE50010073FF308F4675402329FE202B 4DEB8B710166302B2CA230CB60A89B0C A23BFD830D677F3D6AC21A9C5628C3D4 F0D804F59A20273A9D85A3A1C83D2AC4 64066A1DFED37E2862BB9AB3D5D3871A A24B25F2CC07B387A2B6B0D4A947C329 E57EF41FCE8DE2E0456BB90DD239A8E5 A9324898FFE5F125750B29BA6943A491 417A8C50DD5E8E47AA23F720759373B1 527BE9D593A85F82DA527AAA4E361B1F 2EFDA6BA392171FEAB13E0D09B43E7C6 26DB105E2DF116A384042B9DE5ECFF08 795DBAC1AF0B6268783AFB889A49A251 0D94079FB7EB9A25F86070BADD3AB364 4C252771EB153A742F8D4CD202488435 10EFFDADC498590AD6258C0381EE8498 7DD714B7804DF6AFEA76A7E8CD656ACE 90C10260F0BAD3ABFF4466FD726E2E76 E0CBBC8BF759C9C243C589CDED538960 2C870A006D0B58C84D3DE8C01569D53F 9489973945AF5AB6E5869CB76311B78F
147359CE
FE50010023A72F1531023903698D2F7F 28D09832154B6EECBA016FF7A223B00C A85B4CB68A0C2A0085D4A909E00F5933 443E3FA2B4783151392C5733B640594C 4CE541F26850B4499DE1F0E35406A2CE E3E23D7C3C26C19AB41E589CCCEC618F D53DBCA65D8479FA43D0521173AACE31 1B6A1D0BF0BF4209B60C1C04F45BA4FC 58AF15D779B00B6B3136B5158D04CAAA 34633524EC69827623DC62DD417F422C C858A370963DDE17CA5EFAAA07D2ECDF D3D786D2DC3AA4EEC74C30B4663131A3 0B09AA4AFD44D36ECD397ED1EDD99C8F 02725047B5821C87F4CEA539A970C6AE DB7A2AE8B18C0D22AF538466F0C82242 56DEE4CBACE4ED1EE78758E03275DE34 AA47D4EAB9FF253F3FAEA05DB754A4C4 F1D0EA8141D3B599DE5DA06858889FE0 0625F5F0C95B70E2F72CF024987B49C9 BCC958CBEE3010F70AF6E914D7FDF847 06C60FEAA6DBA643153792712D0E5305
C94AF5C6
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/promote.telegram.org/js/promote.js b/data/web/promote.telegram.org/js/promote.js index 4fc4c9028d..84bc474f83 100644 --- a/data/web/promote.telegram.org/js/promote.js +++ b/data/web/promote.telegram.org/js/promote.js @@ -401,7 +401,6 @@ var Ads = { } }, onBlur: function(value) { - options.onBlur && options.onBlur(field, options.getDataOpts); options.onEnter && options.onEnter(field, value); }, onEnter: function(value) { @@ -497,7 +496,6 @@ var NewAd = { field: selectData.field, c_field: selectData.c_field, }, - onBlur: NewAd.onLocationSelectBlur, onUpdate: NewAd.onSelectUpdate, onChange: NewAd.onLocationSelectChange }); @@ -529,14 +527,10 @@ var NewAd = { state.targetTypeField.fieldEl().on('change.curPage', NewAd.onTargetTypeChange); state.pictureCheckbox = state.$form.field('picture'); state.pictureCheckbox.on('change.curPage', NewAd.onPictureChange); - state.intersectTopicsCheckbox = state.$form.field('intersect_topics'); - state.intersectTopicsCheckbox.on('change.curPage', NewAd.onIntersectTopicsChange); state.excludePoliticCheckbox = state.$form.field('exclude_politic'); state.excludePoliticCheckbox.on('change.curPage', NewAd.onExcludePoliticChange); state.onlyPoliticCheckbox = state.$form.field('only_politic'); state.onlyPoliticCheckbox.on('change.curPage', NewAd.onOnlyPoliticChange); - state.deviceField = state.$form.field('device'); - state.deviceField.on('ddchange.curPage', NewAd.onDeviceChange); state.confirmedCheckbox = state.$form.field('confirmed'); state.confirmedCheckbox.on('change.curPage', NewAd.onConfirmedChange); NewAd.updateAdPreview(state.$form, state.previewData); @@ -573,10 +567,8 @@ var NewAd = { state.targetTypeField.fieldEl().off('.curPage'); state.confirmedCheckbox.off('.curPage'); state.pictureCheckbox.off('.curPage'); - state.intersectTopicsCheckbox.off('.curPage'); state.excludePoliticCheckbox.off('.curPage'); state.onlyPoliticCheckbox.off('.curPage'); - state.deviceField.off('.curPage'); for (var i = 0; i < state.selectList.length; i++) { var selectData = state.selectList[i]; if (selectData.location_search) { @@ -605,10 +597,6 @@ var NewAd = { var $form = $(this.form); NewAd.adPostCheck($form); }, - onIntersectTopicsChange: function() { - NewAd.updateAdTargetOverview(); - NewAd.saveDraftAuto(true); - }, onExcludePoliticChange: function() { if ($(this).prop('checked')) { Aj.state.onlyPoliticCheckbox.prop('checked', false); @@ -672,13 +660,6 @@ var NewAd = { Ads.hideFieldError(buttonField); NewAd.adPostCheck($form); }, - onDeviceChange: function() { - var $form = $(this).parents('form'); - var devideField = $form.field('devide'); - Ads.hideFieldError(devideField); - NewAd.updateAdTargetOverview(); - NewAd.saveDraftAuto(true); - }, adPostCheck: function($form, try_index) { var textField = $form.field('text'); var promoteUrlField = $form.field('promote_url'); @@ -686,7 +667,6 @@ var NewAd = { var websiteNameField = $form.field('website_name'); var websitePhotoField = $form.field('website_photo'); var cpmField = $form.field('cpm'); - var deviceField = $form.field('device'); var text = textField.value(); var promote_url = promoteUrlField.value(); var button = buttonField.data('value'); @@ -694,7 +674,6 @@ var NewAd = { var website_photo = websitePhotoField.value(); var $formGroup = promoteUrlField.fieldEl().parents('.form-group'); var $cpmFormGroup = cpmField.fieldEl().parents('.form-group'); - var device = deviceField.data('value'); if (!text && !promote_url) { return false; } @@ -704,8 +683,7 @@ var NewAd = { promote_url: promote_url, button: button, website_name: website_name, - website_photo: website_photo, - device: device + website_photo: website_photo }; if (Aj.state.adId) { params.ad_id = Aj.state.adId; @@ -934,17 +912,6 @@ var NewAd = { }); return false; }, - onLocationSelectBlur: function(field, opts) { - var $form = Aj.state.$form; - var $cFieldEl = $form.field(opts.c_field); - var c_value = $cFieldEl.data('value'); - if (c_value.join) { - if (c_value.length > 1) { - Ads.hideFieldError($cFieldEl); - return false; - } - } - }, onLocationSelectChange: function(field, value, valueFull) { var $fieldEl = Aj.state.$form.field(field); Ads.hideFieldError($fieldEl); @@ -952,12 +919,11 @@ var NewAd = { onSelectUpdate: function(field, value, valueFull) { var $fieldEl = Aj.state.$form.field(field); if (field == 'user_topics') { - var user_topics_cnt = $fieldEl.data('value').length; - if (user_topics_cnt > 1) { - $('.js-intersect-topics-wrap', Aj.state.$form).slideShow(); - } else { - $('.js-intersect-topics-wrap', Aj.state.$form).slideHide(); + var has_user_topics = $fieldEl.data('value').length > 0; + if (has_user_topics) { + Aj.state.onlyPoliticCheckbox.prop('checked', false); } + Aj.state.onlyPoliticCheckbox.prop('disabled', has_user_topics); } var selOpts = $fieldEl.data('selOpts'); var paired_field = selOpts.pairedField; @@ -1226,18 +1192,6 @@ var NewAd = { updateAdTargetOverview: function() { var len = {}, lang_params = {}, need_outside_cb = false; var target_type = Aj.state.$form.field('target_type').value(); - var joinTargets = function(list, or, repeat) { - var lk = or ? 'WEB_AD_TARGET_OR' : 'WEB_AD_TARGET_AND'; - if (repeat && list.length > 2) { - var last_item = list.pop(); - return l(lk, {item1: joinTargets(list, or, repeat), item2: last_item}); - } - if (list.length > 1) { - var last_item = list.pop(); - list[list.length - 1] = l(lk, {item1: list[list.length - 1], item2: last_item}); - } - return list.join(', '); - }; for (var i = 0; i < Aj.state.selectList.length; i++) { var selectData = Aj.state.selectList[i]; var field = selectData.field; @@ -1254,16 +1208,16 @@ var NewAd = { need_outside_cb = true; } } - var list_or = (field == 'langs' || field == 'topics' || field == 'countries' || field == 'locations' || field == 'user_langs' || field == 'user_topics' && !Aj.state.intersectTopicsCheckbox.prop('checked') || field == 'user_channels' || field == 'audiences') - lang_params[field] = joinTargets(list, list_or); + if (list.length > 1) { + var last_item = list.pop(); + list[list.length - 1] = l('WEB_AD_TARGET_AND', {item1: list[list.length - 1], item2: last_item}); + } + lang_params[field] = list.join(', '); } else { lang_params[field] = ''; } Ads.hideFieldError($field); } - len.device = Aj.state.$form.field('device').data('value'); - lang_params.device = '' + Aj.state.$form.field('device').html() + ''; - var overview = ''; if (target_type == 'channels') { if ((len.langs || len.topics) && len.channels) { @@ -1316,33 +1270,27 @@ var NewAd = { if (len.user_topics > 0) { user_targets.push(l('WEB_AD_TARGET_USER_TOPICS', lang_params)); } - if (len.user_channels > 0) { - user_targets.push(l('WEB_AD_TARGET_USER_CHANNELS', lang_params)); - } if (len.audiences > 0) { user_targets.push(l('WEB_AD_TARGET_AUDIENCES', lang_params)); } - if (len.device) { - user_targets.push(l('WEB_AD_TARGET_DEVICE', lang_params)); + if (user_targets.length > 1) { + var last_user_target = user_targets.pop(); + user_targets[user_targets.length - 1] = l('WEB_AD_TARGET_AND', {item1: user_targets[user_targets.length - 1], item2: last_user_target}); } - user_targets = joinTargets(user_targets, false, true); if (Aj.state.onlyPoliticCheckbox.prop('checked')) { - overview += '
' + l('WEB_AD_TARGET_USERS_ONLY_POLITIC', {target: user_targets}) + '
'; + overview += '
' + l('WEB_AD_TARGET_USERS_ONLY_POLITIC', {target: user_targets.join(', ')}) + '
'; } else { - overview += '
' + l('WEB_AD_TARGET_USERS', {target: user_targets}) + '
'; + overview += '
' + l('WEB_AD_TARGET_USERS', {target: user_targets.join(', ')}) + '
'; } if (len.exclude_user_topics > 0) { overview += '
' + l('WEB_AD_TARGET_USER_EXCLUDE_TOPICS', lang_params) + '
'; } - if (len.exclude_user_channels > 0) { - overview += '
' + l('WEB_AD_TARGET_USER_EXCLUDE_CHANNELS', lang_params) + '
'; + if (Aj.state.excludePoliticCheckbox.prop('checked')) { + overview += '
' + l('WEB_AD_TARGET_EXCLUDE_POLITIC') + '
'; } if (len.exclude_audiences > 0) { overview += '
' + l('WEB_AD_TARGET_EXCLUDE_AUDIENCES', lang_params) + '
'; } - if (Aj.state.excludePoliticCheckbox.prop('checked')) { - overview += '
' + l('WEB_AD_TARGET_EXCLUDE_POLITIC') + '
'; - } } $('.js-exclude-outside').addClass('hide'); } else { @@ -1364,8 +1312,7 @@ var NewAd = { $form.field('cpm').value(), $form.field('views_per_user').value(), $form.field('budget').value(), - $form.field('target_type').value(), - $form.field('device').data('value') + $form.field('target_type').value() ]; if ($form.field('picture').prop('checked')) { values.push('picture'); @@ -1375,9 +1322,6 @@ var NewAd = { var vals = $form.field(selectData.field).data('value') || []; values.push(vals.join(';')); } - if ($form.field('intersect_topics').prop('checked')) { - values.push('intersect_topics'); - } if ($form.field('exclude_politic').prop('checked')) { values.push('exclude_politic'); } @@ -1423,7 +1367,6 @@ var NewAd = { var views_per_user = $form.field('views_per_user').value(); var budget = Ads.amountFieldValue($form, 'budget'); var target_type = $form.field('target_type').value(); - var device = $form.field('device').data('value'); if (!title.length) { $form.field('title').focus(); @@ -1457,8 +1400,7 @@ var NewAd = { cpm: cpm, views_per_user: views_per_user, budget: budget, - target_type: target_type, - device: device + target_type: target_type }; if ($form.field('picture').prop('checked')) { params.picture = 1; @@ -1468,9 +1410,6 @@ var NewAd = { var values = $form.field(selectData.field).data('value') || []; params[selectData.field] = values.join(';'); } - if ($form.field('intersect_topics').prop('checked')) { - params.intersect_topics = 1; - } if ($form.field('exclude_politic').prop('checked')) { params.exclude_politic = 1; } @@ -1526,7 +1465,6 @@ var NewAd = { var views_per_user = $form.field('views_per_user').value(); var budget = Ads.amountFieldValue($form, 'budget'); var target_type = $form.field('target_type').value(); - var device = $form.field('device').data('value'); var curFormData = NewAd.getFormData($form); if (Aj.state.initFormData == curFormData) { @@ -1544,8 +1482,7 @@ var NewAd = { cpm: cpm, views_per_user: views_per_user, budget: budget, - target_type: target_type, - device: device + target_type: target_type }; if ($form.field('picture').prop('checked')) { params.picture = 1; @@ -1555,9 +1492,6 @@ var NewAd = { var values = $form.field(selectData.field).data('value') || []; params[selectData.field] = values.join(';'); } - if ($form.field('intersect_topics').prop('checked')) { - params.intersect_topics = 1; - } if ($form.field('exclude_politic').prop('checked')) { params.exclude_politic = 1; } @@ -1600,7 +1534,6 @@ var NewAd = { $form.field('exclude_politic').prop('checked', false); $form.field('only_politic').prop('checked', false); $form.field('exclude_outside').prop('checked', false); - $form.field('device').trigger('selectval', ['']); Aj.state.titleField.focusAndSelect(); NewAd.updateAdPreview(Aj.state.$form, false); var curFormData = NewAd.getFormData($form);
message_id 8, 801D0C0BCC9328765011034FE0A4F8765 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 46C000000 (108 in decimal)94000000 (148 in decimal) Message body length
nonce 24, 167E7938C14AB73024C394DBC0E80A6B5DA1D050584CB793A79A251DC434D9E6C6 Value generated by client in Step 1
server_nonce 40, 16DDF3952525822DBE37BBF15E0DC8A86069FFA0EA0BC5AC08F34727D87F16883C Value received from server in Step 2
new_nonce_hash1 56, 1604F991DD4F679B4CA2E7C73B00194DECB81243C54DB8F0719587E0B973A2114D 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.