diff --git a/data/web/corefork.telegram.org/api/config.html b/data/web/corefork.telegram.org/api/config.html index 3e40e41fe7..96aa307e86 100644 --- a/data/web/corefork.telegram.org/api/config.html +++ b/data/web/corefork.telegram.org/api/config.html @@ -530,7 +530,7 @@ Note that the stickerset can be fetched using transcribe_audio_trial_weekly_number

The maximum number of speech recognition » calls per week for non-Premium users. (integer)

transcribe_audio_trial_duration_max

-

The maximum allowed duration of media for speech recognition » for non-Premium users. (integer)

+

The maximum allowed duration of media in seconds for speech recognition » for non-Premium users. (integer)

recommended_channels_limit_default

The maximum number of similar channels that can be recommended by channels.getChannelRecommendations» to non-Premium users. (integer)

recommended_channels_limit_premium

diff --git a/data/web/corefork.telegram.org/api/transcribe.html b/data/web/corefork.telegram.org/api/transcribe.html index ad06f38f88..e08344b4dc 100644 --- a/data/web/corefork.telegram.org/api/transcribe.html +++ b/data/web/corefork.telegram.org/api/transcribe.html @@ -58,8 +58,8 @@ The returned messages.transcribedAudio constructor will have the pending flag set if the transcription is still in progress and the transcribed text contained in text will be updated in future with updateTranscribedAudio updates.
These updates will contain the updated text with the same transcription_id returned in the first messages.transcribedAudio, and the pending flag will be set if the transcription is still in progress.

A transcription can then be rated as good or bad using messages.rateTranscribedAudio.

-

Users without a Telegram Premium subscription can only transcribe transcribe_audio_trial_weekly_number messages per week, of maximum duration equal to transcribe_audio_trial_duration_max.
-For non-premium users, the trial_remains_num and trial_remains_until_date flags of the messages.transcribedAudio will also be set, indicating the remaining transcriptions, and the date when the trial_remains_num counter will be reset to the maximum value of transcribe_audio_trial_weekly_number.

+

Users without a Telegram Premium subscription can only transcribe transcribe_audio_trial_weekly_number messages per week, of maximum duration equal to transcribe_audio_trial_duration_max seconds.
+For non-premium users, the trial_remains_num and trial_remains_until_date flags of messages.transcribedAudio will also be set, indicating the remaining transcriptions, and the date when the trial_remains_num counter will be reset to the maximum value of transcribe_audio_trial_weekly_number.

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 0d50ffefe7..276f3f7bfd 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 B8 66 08 00 6B AC 7C 65
-0010 | 14 00 00 00 F1 8E 7E BE 40 D6 59 B1 27 2C F7 5A
-0020 | EE A1 83 3A 66 BE D1 DA
+
0000 | 00 00 00 00 00 00 00 00 34 A1 0A 00 29 B0 7C 65
+0010 | 14 00 00 00 F1 8E 7E BE 28 DF 3D CE 6D 19 69 73
+0020 | E2 B3 98 84 CA 1C 70 6A

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 0C 7F 03 6D AC 7C 65
-0010 | 78 00 00 00 63 24 16 05 40 D6 59 B1 27 2C F7 5A
-0020 | EE A1 83 3A 66 BE D1 DA EB A4 DF 47 84 75 8E BA
-0030 | 7D B4 DA 94 FF AB 83 FD 08 16 4E C3 0C A4 B3 9E
-0040 | 13 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 9C 2D 34 2A B0 7C 65
+0010 | 7C 00 00 00 63 24 16 05 28 DF 3D CE 6D 19 69 73
+0020 | E2 B3 98 84 CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E
+0030 | 15 57 A9 EF B6 58 A4 FB 08 33 79 E4 04 1E 66 56
+0040 | 4F 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 = 1607436576088104467
-

Decompose into 2 prime cofactors p < q: 1607436576088104467 = 1206120829 * 1332732623

-
p = 1206120829
-q = 1332732623
+
pq = 3709246474457339471
+

Decompose into 2 prime cofactors p < q: 3709246474457339471 = 1918298131 * 1933613141

+
p = 1918298131
+q = 1933613141

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 16 4E C3 0C A4 B3 9E 13 00 00 00
-0010 | 04 47 E3 F1 7D 00 00 00 04 4F 6F E2 CF 00 00 00
-0020 | 40 D6 59 B1 27 2C F7 5A EE A1 83 3A 66 BE D1 DA
-0030 | EB A4 DF 47 84 75 8E BA 7D B4 DA 94 FF AB 83 FD
-0040 | AD EB 4D 91 E6 F8 10 59 07 33 3D A4 D6 32 39 FD
-0050 | 6E 51 BD 27 66 2A B5 FB 26 9A 15 57 ED 3F 34 34
+
0000 | 95 5F F5 A9 08 33 79 E4 04 1E 66 56 4F 00 00 00
+0010 | 04 72 56 E8 13 00 00 00 04 73 40 98 55 00 00 00
+0020 | 28 DF 3D CE 6D 19 69 73 E2 B3 98 84 CA 1C 70 6A
+0030 | B5 0F D6 A5 B4 40 E5 5E 15 57 A9 EF B6 58 A4 FB
+0040 | FA BF 0C 9E E9 1E 2E 61 AD A4 AB 68 5C D4 1D 55
+0050 | 2E BB A3 AF B9 11 B0 56 43 BD E3 0A 32 36 4D F3
 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 = 1332732623
- + - + - + - + - + - + @@ -291,39 +291,39 @@ q = 1332732623

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 = 955FF5A908164EC30CA4B39E130000000447E3F17D000000044F6FE2CF00000040D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FDADEB4D91E6F8105907333DA4D63239FD6E51BD27662AB5FB269A1557ED3F343402000000
-random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471ADE48CAA72A180EFEDA49B18393E545BB01909B3A8A30D4607EA9BB0EA4E24D950F905460BFFD80E2C24592514421A062D69A04F8CC37BADDC4970DC113A2FAB
+
data = 955FF5A9083379E4041E66564F000000047256E813000000047340985500000028DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FBFABF0C9EE91E2E61ADA4AB685CD41D552EBBA3AFB911B05643BDE30A32364DF302000000
+random_padding_bytes = C0C6CA28A3F02950BA8A268593B6755DECD2ED8CC8031C84F5DCB1FE3865AB0AA12C2A10CDD64D2B50C7DBF5DF31759E1B6D13EF194E353CD8F15D3B63FF12DCA280BFF086FEAA1956A0E132FAC23D1476121078C8F59695F43BAD44

And this is the output:

-
encrypted_data = C0CB80E9A662A637CD5BEEE6DD739B1327050614AC82763F8728DB2080FE229CF551CDBC5529DB1AA10B489ED09C4569810AE5CB8D5644F6A66929224B206A984CD48132B8C8B3EDABCC2E13C80DEFC44C2718E3C933CAA3E4AD92A461426FDA5A420B3A6C96EA0A8E879FD46C4A9E473DE0E99F6B5A3090E8B98E7FD34BAFF26FC8A093F77FC1715536B4D044043DD78B28C40749FF137C3F8A2D16649795B799785A48E9316441E6EDCA30BEED7729A2793D842295CF9923B333EA3DD7DAF424AA7493F19BFF0D936E9D136357CA292ED0DE718DBF11E62EF5323AAB3487E887A1B952ED3D4865F90386AF9C05882C77AAF573A11C489DEF3D305863EF39FB
+
encrypted_data = 83B6E78FE298AE6124F4C4E6C03013F83593418483E74D81028E04313DB3A41B23B07A6950BE056CF4F26A17DD2FE0659DC16AFAF70300938D468BED7BDF08E350907FCD107AA88D96C6BE51DF3B215FA49F44B8FAB03D6CC3B23DCCD43C808E6506682E331D0D26C277DA65D89DAE4BD0A1DBC23E13958C82B5CEE81566ACF12543FCC5D5BA0AA394C56DF5FCCE09D8385CCC122E6DE21E9BA27814207EEBC7963BE1607E798140869B7CE8EB128534FB4637A277BD58D36941F44D3425DE60A167952CFD6CE4233328653A0F9248AC3C7FD737B823CDA55D4D7F81ECD009346334289524BB0D07EC7DF7F05D38BCBDEFD839594AD74014993E7F8A2D632E17

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

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, 8B86608006BAC7C6534A10A0029B07C65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Random number
message_id 8, 8010C7F036DAC7C65019C2D342AB07C65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 478000000 (120 in decimal)7C000000 (124 in decimal) Message body length
nonce 24, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 40, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Server-generated random number
pq 56, 1208164EC30CA4B39E13000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1607436576088104467
083379E4041E66564F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 3709246474457339471
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
pq 4, 1208164EC30CA4B39E13000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1607436576088104467
083379E4041E66564F000000
TL byte deserialization
=> bigendian conversion to decimal
=> 3709246474457339471
Single-byte prefix denoting length, 8-byte string, and three bytes of padding
p 16, 80447E3F17D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1206120829
047256E813000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1918298131
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 24, 8044F6FE2CF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1332732623
0473409855000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1933613141
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
nonce 32, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 48, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Value received from server in Step 2
new_nonce 64, 32ADEB4D91E6F8105907333DA4D63239FD 6E51BD27662AB5FB269A1557ED3F3434FABF0C9EE91E2E61ADA4AB685CD41D55 2EBBA3AFB911B05643BDE30A32364DF3 Client-generated random number
@@ -345,7 +345,7 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A - + @@ -363,25 +363,25 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A - + - + - + - + @@ -393,7 +393,7 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A - + @@ -402,47 +402,47 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A
6) Server responds with:

Received payload (excluding transport headers/trailers):

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

Payload (de)serialization:

server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
message_id 8, 84C2100006CAC7C6518240D002AB07C65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 40, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Value received from server in Step 2
p 56, 80447E3F17D000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1206120829
047256E813000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1918298131
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
q 64, 8044F6FE2CF000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1332732623
0473409855000000
TL byte deserialization
=> bigendian conversion to decimal
=> 1933613141
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
encrypted_data 80, 260FE000100C0CB80E9A662A637CD5BEEE6 DD739B1327050614AC82763F8728DB20 80FE229CF551CDBC5529DB1AA10B489E D09C4569810AE5CB8D5644F6A6692922 4B206A984CD48132B8C8B3EDABCC2E13 C80DEFC44C2718E3C933CAA3E4AD92A4 61426FDA5A420B3A6C96EA0A8E879FD4 6C4A9E473DE0E99F6B5A3090E8B98E7F D34BAFF26FC8A093F77FC1715536B4D0 44043DD78B28C40749FF137C3F8A2D16 649795B799785A48E9316441E6EDCA30 BEED7729A2793D842295CF9923B333EA 3DD7DAF424AA7493F19BFF0D936E9D13 6357CA292ED0DE718DBF11E62EF5323A AB3487E887A1B952ED3D4865F90386AF 9C05882C77AAF573A11C489DEF3D3058
63EF39FB
FE00010083B6E78FE298AE6124F4C4E6 C03013F83593418483E74D81028E0431 3DB3A41B23B07A6950BE056CF4F26A17 DD2FE0659DC16AFAF70300938D468BED 7BDF08E350907FCD107AA88D96C6BE51 DF3B215FA49F44B8FAB03D6CC3B23DCC D43C808E6506682E331D0D26C277DA65 D89DAE4BD0A1DBC23E13958C82B5CEE8 1566ACF12543FCC5D5BA0AA394C56DF5 FCCE09D8385CCC122E6DE21E9BA27814 207EEBC7963BE1607E798140869B7CE8 EB128534FB4637A277BD58D36941F44D 3425DE60A167952CFD6CE4233328653A 0F9248AC3C7FD737B823CDA55D4D7F81 ECD009346334289524BB0D07EC7DF7F0 5D38BCBDEFD839594AD74014993E7F8A
2D632E17
Value generated above
@@ -464,13 +464,13 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A - + - + @@ -482,19 +482,19 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A - + - + - + @@ -502,20 +502,20 @@ random_padding_bytes = 5DE6C16341AE74DECDCFD12BD4C0F5AF682D9FE21E75E1B98AFBA471A

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

-
encrypted_answer = AC5B514FC58A8DB4C5AFBCC9E0F041D79321F02458EB9726D3367C6872688AC410727DC4C6BF7D2E25299EFE20628FB46468DF37DC4CDD6030308777B0656032F744314D4942801BDD3B52610C323A5AAF540E4FC5801EF4B2F61CDE9C0EB80A1798A24499CA733904E99BB7BF0C3981C996F499668909181A4C563101E55CEFC366B41BB0E9B0AC407B76243FD180BF25F8950B7C0490E60210263233C55D6AA888D85F720238D01498BA05ED4C1C9BD23E6BFFC3712AED44A9811C4E150EAD9BFC244F1D8B0E29F10FD6B17C116DB55D23E6727D8D26F4C7B3593744E69876247557E1FA4FB48E7F1D6C30833AB229D2578DE5259ABADC0940DECDCB763C52372F3378EC6564EFCCBA2A0F785B5712CEB65292039745A33ADB5DCAED6ED74663F7361A95B7BF43615597150FFC8C2180FEF18F2D83B94C0A111F45D2B73283CE7BFD52CF65E5454D67245DB292231BFF5E686377E7DC19563C19F301678F66DEA51612F17856ABFC787AF0FD6A39CED743E00533AA8444D9C3CFAD4AFCCE951AB14DA30192AEAA213168CBF142D71B0E55511E97C467FF587FC3D6C3BCFD06E233F95508D89774911655BC2C5198DB6B1BAEEFFE5E5441AAA652BF0EE484F01A5B95752B30024B9B58651941391C7E13D0961E0EF883505A0AB3F052A98CA6C4F2A42BF5E535D6837EB9BE92CA2F03A5BB4A0AB0DEEB2269F4401981BE5BB6A16F1A8608A45D3711C6F86BB39A2FEA26890A984583F067336DF805A629FBE9FA6720EA8EB2C4DC0C0559D78D2EE4E8C4E78B831671E46B8F72480274693F5123D2F83AE8C90A70F9A847C878088105
-tmp_aes_key = 9F80404847B20E9F8D5357E4FE4CCDF4D9D670F8D21B57ED4AA667DC16391151
-tmp_aes_iv = 4826EC48442743B263E4F6F7A8C874D2B11E4D67634DA5F05B5963FEADEB4D91
+
encrypted_answer = BF52F4439E2C38417E097981793EF5551F7A74FE89B49633E89A967FECF0F0845629811B5CE6BDEDC2D4DE16FD4115DB98D5B2B83C639F1E384A65BFEB9D1103E8CEC7924E8B21C584202294D1C87D8D40EE495489A22EE97E622CD116D893064FD7F21C41B27E3BDD1DAC60537AD1164E8695C664A1D329D1E820679A05049FCDA06A455DAB2F3FB6A299F0939626B011FED08864BA5D0D3CE923547DB86882AB23C91A0BBE6822F11F49237513EBADC62FD392CB14DA494A89D273DE279C494BCA8FD9A7F9D4A2D060620D5282BE1CCA0728CDA074A4E340D9A8381529E7F21C0CDAB9F2D898080EB9341FAA7886FA3C20A58209C9A78D8EEED0972C663356538D7707F8CF3C3D206C62B3833C8820A3B034EDFDA17F69474B55FC74D57B194B0800C2E8993692013113AA0FA01A0085D6BADBD6A2CC9168ABC2CAEFAFBA54CD0185795F959796727C665747DA9BF1D55B845B42B7447787CC46BEAEEA35AD9809A0D19020FC57FC04C9DBD63C1BE79357F948052C233E1DCF3BBFA6565722B7F8CD812C798DC0A4D91581B7362659814937304E4A44762F541F8A89A3B24761BAFA9B2DD33EEECC6474A9D45B67E6173A26084FFA56BD6EC1A2C54CDECA30DA7A50DC6F8E57EDAC69C1AF82DE6D7A0B952C7AEF637F56530BB785378503D1CD30A152363163D3D1CF0203D1921A73A03A2054E028E52DF9E39B6A006E2870A9898A453C825A0354FCEC475ADF1C5D7BF47D2AA0D80C7263F83886AE7348E9F92D4B4B80B3477381302A4E473A9096E24027FB781BF8C2E75AA2735F868AC2722B0087E8D65DC60FAEBEEA0621C9B6
+tmp_aes_key = E8092F50472E2A1319D51CC38AA608D9B6B393B16324279C655CF0D748F3AFED
+tmp_aes_iv = 13583ECF6FD8C0ECDB6CB710EC1A784C2128CD3A3053E83970188F81FABF0C9E

Yielding:

-
answer_with_hash = 20FE7C212E6557A75EF65010B94C3E5CFBF115CCBA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FD03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010062AA2F3D99A2D62E6036E2D5E67CB62D56254D74281F80EFD33BD9B29104649A14BFE483A7BA2958AF765B0F9284994C0B39AFE1D5B33637F627629E2DCE51D1797A17E4D7A8B9C2E113FCD808EA745D1D6033399CDCC74D150CF57F4CFC846041249425B8F12FCF1FF6B6FD8A438221D96D33EA97EAE8D9011DF9B3BBA34CF2A095CF28C564D46C25F1C5A1AC46032F20A5B0C1366E93F92DD5B2A33D69F7106D7B0E7E933167A25F86706A3B483041886912D705A08F6F026B7A8B51980E204D02707AD1A4CB181061FC4B9E70CB33E28FFE5BDD4DDC2A3B7886AE702CDC54DFA8918B34E1E3813F48C30DEAF8B79AB78111EF66FB3139E196BDB43CA8D6F76DAC7C653E866F144BF2F8B8
-answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FD03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010062AA2F3D99A2D62E6036E2D5E67CB62D56254D74281F80EFD33BD9B29104649A14BFE483A7BA2958AF765B0F9284994C0B39AFE1D5B33637F627629E2DCE51D1797A17E4D7A8B9C2E113FCD808EA745D1D6033399CDCC74D150CF57F4CFC846041249425B8F12FCF1FF6B6FD8A438221D96D33EA97EAE8D9011DF9B3BBA34CF2A095CF28C564D46C25F1C5A1AC46032F20A5B0C1366E93F92DD5B2A33D69F7106D7B0E7E933167A25F86706A3B483041886912D705A08F6F026B7A8B51980E204D02707AD1A4CB181061FC4B9E70CB33E28FFE5BDD4DDC2A3B7886AE702CDC54DFA8918B34E1E3813F48C30DEAF8B79AB78111EF66FB3139E196BDB43CA8D6F76DAC7C653E866F144BF2F8B8
+
answer_with_hash = 11D98D59D83CA9ACD8258150802B26146FF8C1BEBA0D89B528DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FB03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A714391CD4CEED681586FACA07436667360159993698BEB0EE171C26A5A2F0BCDF97750907EFA4870A743480F9F697D63B97FA0AD5FA697C7603B3089F7E083403B4D2DA05D2960B5A0FA2116E7DA9803DB486EA173F15CA3B8705364241581B9FC429DE343412FB9D92F1575EBD4572AAE745EBCDC2EF16316D9EEB2187DA11872C776D901F545702117B8443FA2A9D8CD2DEA39090D68ADFF781CC507E483BC520CA954DE7D064DDE0F86570F0A8F154EBB4D510BC2AAE3168C1EF84E6C55736EB02EFF6A42A45D897B6DD4B9F44B76572D2F6FADE60F54BA356E6AF418FA207D5216FDF84ECB4939A85C1246055FA8174F807B94CA517E2B47A3E542928D72AB07C658F4C71A736CDBC8B
+answer = BA0D89B528DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FB03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100A714391CD4CEED681586FACA07436667360159993698BEB0EE171C26A5A2F0BCDF97750907EFA4870A743480F9F697D63B97FA0AD5FA697C7603B3089F7E083403B4D2DA05D2960B5A0FA2116E7DA9803DB486EA173F15CA3B8705364241581B9FC429DE343412FB9D92F1575EBD4572AAE745EBCDC2EF16316D9EEB2187DA11872C776D901F545702117B8443FA2A9D8CD2DEA39090D68ADFF781CC507E483BC520CA954DE7D064DDE0F86570F0A8F154EBB4D510BC2AAE3168C1EF84E6C55736EB02EFF6A42A45D897B6DD4B9F44B76572D2F6FADE60F54BA356E6AF418FA207D5216FDF84ECB4939A85C1246055FA8174F807B94CA517E2B47A3E542928D72AB07C658F4C71A736CDBC8B

Generated payload (excluding transport headers/trailers):

-
0000 | BA 0D 89 B5 40 D6 59 B1 27 2C F7 5A EE A1 83 3A
-0010 | 66 BE D1 DA EB A4 DF 47 84 75 8E BA 7D B4 DA 94
-0020 | FF AB 83 FD 03 00 00 00 FE 00 01 00 C7 1C AE B9
+
0000 | BA 0D 89 B5 28 DF 3D CE 6D 19 69 73 E2 B3 98 84
+0010 | CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E 15 57 A9 EF
+0020 | B6 58 A4 FB 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 = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
 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 | 62 AA 2F 3D 99 A2 D6 2E 60 36 E2 D5 E6 7C B6 2D
-0140 | 56 25 4D 74 28 1F 80 EF D3 3B D9 B2 91 04 64 9A
-0150 | 14 BF E4 83 A7 BA 29 58 AF 76 5B 0F 92 84 99 4C
-0160 | 0B 39 AF E1 D5 B3 36 37 F6 27 62 9E 2D CE 51 D1
-0170 | 79 7A 17 E4 D7 A8 B9 C2 E1 13 FC D8 08 EA 74 5D
-0180 | 1D 60 33 39 9C DC C7 4D 15 0C F5 7F 4C FC 84 60
-0190 | 41 24 94 25 B8 F1 2F CF 1F F6 B6 FD 8A 43 82 21
-01A0 | D9 6D 33 EA 97 EA E8 D9 01 1D F9 B3 BB A3 4C F2
-01B0 | A0 95 CF 28 C5 64 D4 6C 25 F1 C5 A1 AC 46 03 2F
-01C0 | 20 A5 B0 C1 36 6E 93 F9 2D D5 B2 A3 3D 69 F7 10
-01D0 | 6D 7B 0E 7E 93 31 67 A2 5F 86 70 6A 3B 48 30 41
-01E0 | 88 69 12 D7 05 A0 8F 6F 02 6B 7A 8B 51 98 0E 20
-01F0 | 4D 02 70 7A D1 A4 CB 18 10 61 FC 4B 9E 70 CB 33
-0200 | E2 8F FE 5B DD 4D DC 2A 3B 78 86 AE 70 2C DC 54
-0210 | DF A8 91 8B 34 E1 E3 81 3F 48 C3 0D EA F8 B7 9A
-0220 | B7 81 11 EF 66 FB 31 39 E1 96 BD B4 3C A8 D6 F7
-0230 | 6D AC 7C 65
+0130 | A7 14 39 1C D4 CE ED 68 15 86 FA CA 07 43 66 67 +0140 | 36 01 59 99 36 98 BE B0 EE 17 1C 26 A5 A2 F0 BC +0150 | DF 97 75 09 07 EF A4 87 0A 74 34 80 F9 F6 97 D6 +0160 | 3B 97 FA 0A D5 FA 69 7C 76 03 B3 08 9F 7E 08 34 +0170 | 03 B4 D2 DA 05 D2 96 0B 5A 0F A2 11 6E 7D A9 80 +0180 | 3D B4 86 EA 17 3F 15 CA 3B 87 05 36 42 41 58 1B +0190 | 9F C4 29 DE 34 34 12 FB 9D 92 F1 57 5E BD 45 72 +01A0 | AA E7 45 EB CD C2 EF 16 31 6D 9E EB 21 87 DA 11 +01B0 | 87 2C 77 6D 90 1F 54 57 02 11 7B 84 43 FA 2A 9D +01C0 | 8C D2 DE A3 90 90 D6 8A DF F7 81 CC 50 7E 48 3B +01D0 | C5 20 CA 95 4D E7 D0 64 DD E0 F8 65 70 F0 A8 F1 +01E0 | 54 EB B4 D5 10 BC 2A AE 31 68 C1 EF 84 E6 C5 57 +01F0 | 36 EB 02 EF F6 A4 2A 45 D8 97 B6 DD 4B 9F 44 B7 +0200 | 65 72 D2 F6 FA DE 60 F5 4B A3 56 E6 AF 41 8F A2 +0210 | 07 D5 21 6F DF 84 EC B4 93 9A 85 C1 24 60 55 FA +0220 | 81 74 F8 07 B9 4C A5 17 E2 B4 7A 3E 54 29 28 D7 +0230 | 2A B0 7C 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, 801CC71B06DAC7C6501DCEBE62AB07C65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 4A8020000 (680 in decimal)78020000 (632 in decimal) Message body length
nonce 24, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 40, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Value received from server in Step 2
encrypted_answer 56, 596FE500200AC5B514FC58A8DB4C5AFBCC9 E0F041D79321F02458EB9726D3367C68 72688AC410727DC4C6BF7D2E25299EFE 20628FB46468DF37DC4CDD6030308777 B0656032F744314D4942801BDD3B5261 0C323A5AAF540E4FC5801EF4B2F61CDE 9C0EB80A1798A24499CA733904E99BB7 BF0C3981C996F499668909181A4C5631 01E55CEFC366B41BB0E9B0AC407B7624 3FD180BF25F8950B7C0490E602102632 33C55D6AA888D85F720238D01498BA05 ED4C1C9BD23E6BFFC3712AED44A9811C 4E150EAD9BFC244F1D8B0E29F10FD6B1 7C116DB55D23E6727D8D26F4C7B35937 44E69876247557E1FA4FB48E7F1D6C30 833AB229D2578DE5259ABADC0940DECD CB763C52372F3378EC6564EFCCBA2A0F 785B5712CEB65292039745A33ADB5DCA ED6ED74663F7361A95B7BF4361559715 0FFC8C2180FEF18F2D83B94C0A111F45 D2B73283CE7BFD52CF65E5454D67245D B292231BFF5E686377E7DC19563C19F3 01678F66DEA51612F17856ABFC787AF0 FD6A39CED743E00533AA8444D9C3CFAD 4AFCCE951AB14DA30192AEAA213168CB F142D71B0E55511E97C467FF587FC3D6 C3BCFD06E233F95508D89774911655BC 2C5198DB6B1BAEEFFE5E5441AAA652BF 0EE484F01A5B95752B30024B9B586519 41391C7E13D0961E0EF883505A0AB3F0 52A98CA6C4F2A42BF5E535D6837EB9BE 92CA2F03A5BB4A0AB0DEEB2269F44019 81BE5BB6A16F1A8608A45D3711C6F86B B39A2FEA26890A984583F067336DF805 A629FBE9FA6720EA8EB2C4DC0C0559D7 8D2EE4E8C4E78B831671E46B8F724802 74693F5123D2F83AE8C90A70F9A847C8
78088105
FE500200BF52F4439E2C38417E097981 793EF5551F7A74FE89B49633E89A967F ECF0F0845629811B5CE6BDEDC2D4DE16 FD4115DB98D5B2B83C639F1E384A65BF EB9D1103E8CEC7924E8B21C584202294 D1C87D8D40EE495489A22EE97E622CD1 16D893064FD7F21C41B27E3BDD1DAC60 537AD1164E8695C664A1D329D1E82067 9A05049FCDA06A455DAB2F3FB6A299F0 939626B011FED08864BA5D0D3CE92354 7DB86882AB23C91A0BBE6822F11F4923 7513EBADC62FD392CB14DA494A89D273 DE279C494BCA8FD9A7F9D4A2D060620D 5282BE1CCA0728CDA074A4E340D9A838 1529E7F21C0CDAB9F2D898080EB9341F AA7886FA3C20A58209C9A78D8EEED097 2C663356538D7707F8CF3C3D206C62B3 833C8820A3B034EDFDA17F69474B55FC 74D57B194B0800C2E8993692013113AA 0FA01A0085D6BADBD6A2CC9168ABC2CA EFAFBA54CD0185795F959796727C6657 47DA9BF1D55B845B42B7447787CC46BE AEEA35AD9809A0D19020FC57FC04C9DB D63C1BE79357F948052C233E1DCF3BBF A6565722B7F8CD812C798DC0A4D91581 B7362659814937304E4A44762F541F8A 89A3B24761BAFA9B2DD33EEECC6474A9 D45B67E6173A26084FFA56BD6EC1A2C5 4CDECA30DA7A50DC6F8E57EDAC69C1AF 82DE6D7A0B952C7AEF637F56530BB785 378503D1CD30A152363163D3D1CF0203 D1921A73A03A2054E028E52DF9E39B6A 006E2870A9898A453C825A0354FCEC47 5ADF1C5D7BF47D2AA0D80C7263F83886 AE7348E9F92D4B4B80B3477381302A4E 473A9096E24027FB781BF8C2E75AA273 5F868AC2722B0087E8D65DC60FAEBEEA
0621C9B6
See below
@@ -570,13 +570,13 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F - + - + @@ -594,13 +594,13 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F - + - + @@ -609,34 +609,34 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F
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 = 010D0C826F5EB17198EF2B07B58506138CBD144D275A81E8D54BDDBE3156BA40BA7D8EC57D2995A34312FFD1C6F3D6FF879101A1B84A9D0E4844192CBC2A6A927763F4C40AE603FB573AD3BB64C3E094DA135F1F6DDC662DBB49E75622E06C848F872648C4260142624EF8F5FB362FC996C2461D4C341383237B6C6FBFABCE529B3EFBC7511FAE912B9D3D0112A293CAA1DE6C7E1C28DDF019578C21A5731ACB8FE4753F3F6421045471E00E33BB82D848214E34C0C0528AF144DBDB62F45DC74D3774595C00058747F1C4D78B2C28938BA47B5EF62AFDD3719CB10A08F5633C0D88F9AEAE9C3B4E74883A11D6F25F052CD1F7269784654FFB3B95DBB8B7E49F
+
b = EF526EA535D29E7C7025D5E5ECA5A00E530CC52BF0495DC052F2BA2A36D54D8EF0F65C3B312AADF4AAFCAC03C9984E501AFED90606B7CA0BF6D1259565B5AD40DCF328FB60D919C548E382A18BDA1B4A0F76AE959EB5339D66C550B7F7CA3F29A568E127FF3CAB2011242E7D556BD36C485125B15A67BFCBFAEAC908D84E2405AA9D663EB563BA99E81C1815C55F22DE8845826788ED90824792EB7D75777EA7B8185FDEF6E6DD775A8DA1208883D55F81138B1F525B2E865619B10ECF323D7F5337667DC094D22768795632611E415119FD86F6C9528621010E5D12F80FE63D416A570A4D2D4CEC6A572A5D2F368196541919592F54332BF6DC7DD312215C46

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

-
g_b = 1C4CD5DFF6CCC5B2FB8E7535A8374D7C1028788BA8E0E14E20EA1EC24967675B4DC9B63FCD82EA35E6195B2B33CFC213DB4AE06412884CA1AE1619252109C121024FCD42A9BE2B23B3AA45AD1F1CCC7516AC449025954F1140B2D6123AADB21DA3C07773AE304036B6497D78693E599277F4D6FBBC5092E5F53C4185351EA8F26E9D9F08F125177A17F1E75F1AE88C0F64BE7325A69736E1F32F1523861C0A0C30969CAEB3BB0B9FFA2A854D38EC839623C2DD5256CF1DA13BEE06D4AAB305BBD7253F0F00ABE209EED2F9DEBA24F084E5BBD3CDBE07A95B87EE88B800C5150E5D0293046DD068E5896F6ACE8DB7919C741ECBA15C508FA902192C7D9A53B401
+
g_b = 4001C671D59B971B540A94DA7C95FF0F5B05D47CFA6B8D3C07856A5FBA5289021773DF5C30F98B3A2D2059663D52E3B87F9AB60C4C67C9A4A054CDED2C41494C0117AC8BB6B3E6C90A8C6221B92ACF2E3318E2C405F27EBE6910C7A0B5AE0D835C031F91F62287945A12BB4EECAB8C0FD668E1C391414A0F0F4D3B52CA5F8ED93A35F1F454B6EF7D0494EBBB49EC02EDC7FB7FBCE7E84D3B78F918C48AB1DA4C80D60F38738F6BA46A264511DCB1C821C801BB95ADFA09A06A74B0899070BBDB1A0A74A535612E54BD80FC4C6FD1756F8B73554F84337ACB50EEBA6C0CB9E06CC917F95D2803566E3F15F2AA917EC7281B5D910E6B9923A92BA6E0BA29D106DE
7.1) generation of encrypted_data

Generated payload (excluding transport headers/trailers):

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

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, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 20, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Value received from server in Step 2
g_a 300, 260FE00010062AA2F3D99A2D62E6036E2D5 E67CB62D56254D74281F80EFD33BD9B2 9104649A14BFE483A7BA2958AF765B0F 9284994C0B39AFE1D5B33637F627629E 2DCE51D1797A17E4D7A8B9C2E113FCD8 08EA745D1D6033399CDCC74D150CF57F 4CFC846041249425B8F12FCF1FF6B6FD 8A438221D96D33EA97EAE8D9011DF9B3 BBA34CF2A095CF28C564D46C25F1C5A1 AC46032F20A5B0C1366E93F92DD5B2A3 3D69F7106D7B0E7E933167A25F86706A 3B483041886912D705A08F6F026B7A8B 51980E204D02707AD1A4CB181061FC4B 9E70CB33E28FFE5BDD4DDC2A3B7886AE 702CDC54DFA8918B34E1E3813F48C30D EAF8B79AB78111EF66FB3139E196BDB4
3CA8D6F7
FE000100A714391CD4CEED681586FACA 07436667360159993698BEB0EE171C26 A5A2F0BCDF97750907EFA4870A743480 F9F697D63B97FA0AD5FA697C7603B308 9F7E083403B4D2DA05D2960B5A0FA211 6E7DA9803DB486EA173F15CA3B870536 4241581B9FC429DE343412FB9D92F157 5EBD4572AAE745EBCDC2EF16316D9EEB 2187DA11872C776D901F545702117B84 43FA2A9D8CD2DEA39090D68ADFF781CC 507E483BC520CA954DE7D064DDE0F865 70F0A8F154EBB4D510BC2AAE3168C1EF 84E6C55736EB02EFF6A42A45D897B6DD 4B9F44B76572D2F6FADE60F54BA356E6 AF418FA207D5216FDF84ECB4939A85C1 246055FA8174F807B94CA517E2B47A3E
542928D7
g_a diffie-hellman parameter
server_time 560, 46DAC7C65 (1702669421 in decimal)2AB07C65 (1702670378 in decimal) Server time
@@ -658,19 +658,19 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F - + - + - + @@ -684,47 +684,47 @@ answer = BA0D89B540D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83F

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 = 54B6436640D659B1272CF75AEEA1833A66BED1DAEBA4DF4784758EBA7DB4DA94FFAB83FD0000000000000000FE0001001C4CD5DFF6CCC5B2FB8E7535A8374D7C1028788BA8E0E14E20EA1EC24967675B4DC9B63FCD82EA35E6195B2B33CFC213DB4AE06412884CA1AE1619252109C121024FCD42A9BE2B23B3AA45AD1F1CCC7516AC449025954F1140B2D6123AADB21DA3C07773AE304036B6497D78693E599277F4D6FBBC5092E5F53C4185351EA8F26E9D9F08F125177A17F1E75F1AE88C0F64BE7325A69736E1F32F1523861C0A0C30969CAEB3BB0B9FFA2A854D38EC839623C2DD5256CF1DA13BEE06D4AAB305BBD7253F0F00ABE209EED2F9DEBA24F084E5BBD3CDBE07A95B87EE88B800C5150E5D0293046DD068E5896F6ACE8DB7919C741ECBA15C508FA902192C7D9A53B401
-padding = E13CA42691F8DB3231782F87
-tmp_aes_key = 9F80404847B20E9F8D5357E4FE4CCDF4D9D670F8D21B57ED4AA667DC16391151
-tmp_aes_iv = 4826EC48442743B263E4F6F7A8C874D2B11E4D67634DA5F05B5963FEADEB4D91
+
data = 54B6436628DF3DCE6D196973E2B39884CA1C706AB50FD6A5B440E55E1557A9EFB658A4FB0000000000000000FE0001004001C671D59B971B540A94DA7C95FF0F5B05D47CFA6B8D3C07856A5FBA5289021773DF5C30F98B3A2D2059663D52E3B87F9AB60C4C67C9A4A054CDED2C41494C0117AC8BB6B3E6C90A8C6221B92ACF2E3318E2C405F27EBE6910C7A0B5AE0D835C031F91F62287945A12BB4EECAB8C0FD668E1C391414A0F0F4D3B52CA5F8ED93A35F1F454B6EF7D0494EBBB49EC02EDC7FB7FBCE7E84D3B78F918C48AB1DA4C80D60F38738F6BA46A264511DCB1C821C801BB95ADFA09A06A74B0899070BBDB1A0A74A535612E54BD80FC4C6FD1756F8B73554F84337ACB50EEBA6C0CB9E06CC917F95D2803566E3F15F2AA917EC7281B5D910E6B9923A92BA6E0BA29D106DE
+padding = 31B9FA59CAF3AEADE31E1940
+tmp_aes_key = E8092F50472E2A1319D51CC38AA608D9B6B393B16324279C655CF0D748F3AFED
+tmp_aes_iv = 13583ECF6FD8C0ECDB6CB710EC1A784C2128CD3A3053E83970188F81FABF0C9E

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 = 9650445AD6C9B22DA795AEA28948BD7D2FEDC2AB174CA134361803ABFF40DC52E8322703D55A0A01556511D329AAB8DA1017EFAF1746CB6BA8E48FADBBA12EA797D9BF4532C368908D05E7F57B0108BFACE7922CB7C05897EB3B2D0E45F89E9C7425B0E9B35A52FE7D0D89CC412C8DA2D4C84512C306909D61FE6179D38C3CE5F163068F08FDE60201FEFF083E6B075EE8F8CB63CB9E48D1AD814BB14D211C3A993E8959684B19C6AB2CF4494E68FB7217BC9F62DC6C432995D34CC63BC04EB8C17E4FB9BCC34F401FD737384AB0AEA73CE407667D266BB8683A70BBD3EDBD3BBC4CC7049BDD731A422D98E5010F9D389E365D38287EB406154DA781621C7D61FCFFA007371D1FB866EC3E6933B4C8284EE8C0F29CF27778B0AB574F42921F8622E22E730F0900A05BCC29C0D05B6C7AE901323FF88E7BCCE4AA1805C1F2559FF52B46D3D814C52E2E9E5BCE339F91BA
+
encrypted_data = 30442A11EB1AEE5ECF2FE90B70C89D67CE2FD0C7C7F98A31DF48A9BEB123C94D6FA71DA72A35D0F65EA28EEEED3D23DEDDC90F15D105A8E0614C01AB7880D382C0BFDC39ABCC498DCA8532319DF92FFE294102FDFC791048C001863C1F8E211575495BE7BA7CF0CD6E322E4F9BDC2C5903588800C9E99F76881A096E9DEF7402E096B9972DF747625C1BFBCD95DE384644C43674FD8CC0779A91FC90F56B59EA5D661941E48A07C70D49C8E10F5BF64A7B5920CC17292C28AC3494AC40215781AE30C95978767D4C82873ADEEDD8C35E0A1AFD5158041B2E6531F5BA1AB19B6DBAFCF6AC15AA482BCB63506D78A6A045B894C58468C4F878393FD414CEF3952D3D416255F619D69C8E10F6350050BF32B7E0BA0ADD5343DB8531176E155115EF5CBF1CD996AA8207E3BFA5A72547214A2FBEE5E3FA89FE9D3821B2398FB86807575328280575109AFC44DAFCFA67CD77

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

Payload (de)serialization:

set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
nonce 4, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 20, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Value received from server in Step 2
g_b 36, 260FE0001001C4CD5DFF6CCC5B2FB8E7535 A8374D7C1028788BA8E0E14E20EA1EC2 4967675B4DC9B63FCD82EA35E6195B2B 33CFC213DB4AE06412884CA1AE161925 2109C121024FCD42A9BE2B23B3AA45AD 1F1CCC7516AC449025954F1140B2D612 3AADB21DA3C07773AE304036B6497D78 693E599277F4D6FBBC5092E5F53C4185 351EA8F26E9D9F08F125177A17F1E75F 1AE88C0F64BE7325A69736E1F32F1523 861C0A0C30969CAEB3BB0B9FFA2A854D 38EC839623C2DD5256CF1DA13BEE06D4 AAB305BBD7253F0F00ABE209EED2F9DE BA24F084E5BBD3CDBE07A95B87EE88B8 00C5150E5D0293046DD068E5896F6ACE 8DB7919C741ECBA15C508FA902192C7D
9A53B401
FE0001004001C671D59B971B540A94DA 7C95FF0F5B05D47CFA6B8D3C07856A5F BA5289021773DF5C30F98B3A2D205966 3D52E3B87F9AB60C4C67C9A4A054CDED 2C41494C0117AC8BB6B3E6C90A8C6221 B92ACF2E3318E2C405F27EBE6910C7A0 B5AE0D835C031F91F62287945A12BB4E ECAB8C0FD668E1C391414A0F0F4D3B52 CA5F8ED93A35F1F454B6EF7D0494EBBB 49EC02EDC7FB7FBCE7E84D3B78F918C4 8AB1DA4C80D60F38738F6BA46A264511 DCB1C821C801BB95ADFA09A06A74B089 9070BBDB1A0A74A535612E54BD80FC4C 6FD1756F8B73554F84337ACB50EEBA6C 0CB9E06CC917F95D2803566E3F15F2AA 917EC7281B5D910E6B9923A92BA6E0BA
29D106DE
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 = 704962C6CEE4F017E536B0FCD4E4C0A67BF4281A5192E1729EDA71F69744F28735DD10CCAF8CBF9A8B41B7C6552CE597D2E798CDEEA549151B6732A9993EE6E4594B27F7344F10A655888EF4EB7695A150E5BCAF826EBAE56724252B42425F72B5AF57F88141617247513A7DCED1B4A77CDA6EA70D4E7838391B43814C4A57FE87EB9FC3C11246DC6480A35E51045598AE8C5C3BDBBEF945E2F3E5B23B7D613CF818B6340280B91FDDB182D3DE96BAD1DD1A88A03B801158FCD816488DC9A0C186BBBB6FFDCE4D959556FE82115BB1DCDBD8880666FEE86B4F3FF51254873DA79E3F90CA692EB2784A48413FB663A472542B8A9B7DC3E449CF94B3E1C8163BC9
+
auth_key = BFEED88FC51E73CC60106C675FA6C6841AED1872021C82F8CDE78D32384D2DF8DDFB3FEA5DDCACC93ADBC31F28AB0CB3DE5AFB5A57F44FC6C0D17B5470C976412D5431BF05BC2F88E0CEC263AD258CA3217BD5A637182E508E327846B2C0408494AE3FAC3F2BD652D1214DB8AABCDF9BC93A3010825F62F10EFBCB97B888E66E13BCE3623F3E8F91D0D174D7ECDB486DCA85B3E2DB2F3514E88BE9D71F63D16EF920A05AC59A1D9E13D73CDE7ADCD55E28E0BE6FA0CF753E36243DFE3E3FB2562C2530F21672482621B5883B27EDD9155F396AEDEF14C19C5C308551895DC73B1FB3F82191C8428C2980D9B40CB74CE0412FF0F35A894DC908115BA7FF75327F
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 8C D5 FB 6D AC 7C 65
-0010 | 58 00 00 00 34 F7 CB 3B 40 D6 59 B1 27 2C F7 5A
-0020 | EE A1 83 3A 66 BE D1 DA EB A4 DF 47 84 75 8E BA
-0030 | 7D B4 DA 94 FF AB 83 FD 0A D7 C8 3B BA 5E 75 ED
-0040 | C6 53 7C D2 2A 01 D0 AE
+
0000 | 00 00 00 00 00 00 00 00 01 00 E1 AD 2B B0 7C 65
+0010 | 6C 00 00 00 34 F7 CB 3B 28 DF 3D CE 6D 19 69 73
+0020 | E2 B3 98 84 CA 1C 70 6A B5 0F D6 A5 B4 40 E5 5E
+0030 | 15 57 A9 EF B6 58 A4 FB 21 FA 39 3B 2C 85 C9 8E
+0040 | 8A 9F 1D 27 DB 16 4F 72

Payload (de)serialization:

dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
message_id 8, 89C8D0E006DAC7C65584309002BB07C65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
nonce 24, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 40, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Value received from server in Step 2
encrypted_data 56, 340FE5001009650445AD6C9B22DA795AEA2 8948BD7D2FEDC2AB174CA134361803AB FF40DC52E8322703D55A0A01556511D3 29AAB8DA1017EFAF1746CB6BA8E48FAD BBA12EA797D9BF4532C368908D05E7F5 7B0108BFACE7922CB7C05897EB3B2D0E 45F89E9C7425B0E9B35A52FE7D0D89CC 412C8DA2D4C84512C306909D61FE6179 D38C3CE5F163068F08FDE60201FEFF08 3E6B075EE8F8CB63CB9E48D1AD814BB1 4D211C3A993E8959684B19C6AB2CF449 4E68FB7217BC9F62DC6C432995D34CC6 3BC04EB8C17E4FB9BCC34F401FD73738 4AB0AEA73CE407667D266BB8683A70BB D3EDBD3BBC4CC7049BDD731A422D98E5 010F9D389E365D38287EB406154DA781 621C7D61FCFFA007371D1FB866EC3E69 33B4C8284EE8C0F29CF27778B0AB574F 42921F8622E22E730F0900A05BCC29C0 D05B6C7AE901323FF88E7BCCE4AA1805 C1F2559FF52B46D3D814C52E2E9E5BCE
339F91BA
FE50010030442A11EB1AEE5ECF2FE90B 70C89D67CE2FD0C7C7F98A31DF48A9BE B123C94D6FA71DA72A35D0F65EA28EEE ED3D23DEDDC90F15D105A8E0614C01AB 7880D382C0BFDC39ABCC498DCA853231 9DF92FFE294102FDFC791048C001863C 1F8E211575495BE7BA7CF0CD6E322E4F 9BDC2C5903588800C9E99F76881A096E 9DEF7402E096B9972DF747625C1BFBCD 95DE384644C43674FD8CC0779A91FC90 F56B59EA5D661941E48A07C70D49C8E1 0F5BF64A7B5920CC17292C28AC3494AC 40215781AE30C95978767D4C82873ADE EDD8C35E0A1AFD5158041B2E6531F5BA 1AB19B6DBAFCF6AC15AA482BCB63506D 78A6A045B894C58468C4F878393FD414 CEF3952D3D416255F619D69C8E10F635 0050BF32B7E0BA0ADD5343DB8531176E 155115EF5CBF1CD996AA8207E3BFA5A7 2547214A2FBEE5E3FA89FE9D3821B239 8FB86807575328280575109AFC44DAFC
FA67CD77
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/fragment.com/js/auction.js b/data/web/fragment.com/js/auction.js index 0fdf6e5dfc..a5cb43cd86 100644 --- a/data/web/fragment.com/js/auction.js +++ b/data/web/fragment.com/js/auction.js @@ -1048,9 +1048,7 @@ var Assets = { username: username, auction: true }, function(result) { - if (result.error) { - return showAlert(result.error); - } else if (result.confirm_message) { + if (result.confirm_message) { showConfirm(result.confirm_message, function() { doPutToAuction(); }, result.confirm_button); @@ -1150,9 +1148,7 @@ var Assets = { username: username, auction: false }, function(result) { - if (result.error) { - return showAlert(result.error); - } else if (result.confirm_message) { + if (result.confirm_message) { showConfirm(result.confirm_message, function() { doSellUsername(); }, result.confirm_button);
message_id 8, 8018CD5FB6DAC7C650100E1AD2BB07C65 Message ID generated as specified here » (unixtime() << 32) + (N*4)
message_length 16, 458000000 (88 in decimal)6C000000 (108 in decimal) Message body length
nonce 24, 1640D659B1272CF75AEEA1833A66BED1DA28DF3DCE6D196973E2B39884CA1C706A Value generated by client in Step 1
server_nonce 40, 16EBA4DF4784758EBA7DB4DA94FFAB83FDB50FD6A5B440E55E1557A9EFB658A4FB Value received from server in Step 2
new_nonce_hash1 56, 160AD7C83BBA5E75EDC6537CD22A01D0AE21FA393B2C85C98E8A9F1D27DB164F72 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.