diff --git a/data/web/blogfork.telegram.org/bots/features.html b/data/web/blogfork.telegram.org/bots/features.html index 7ae86b9b4a..384657cb04 100644 --- a/data/web/blogfork.telegram.org/bots/features.html +++ b/data/web/blogfork.telegram.org/bots/features.html @@ -69,7 +69,7 @@
  • Payments
  • Web Login
  • HTML5 Games
  • -
  • Stickers
  • +
  • Stickers
  • Language Support
  • @@ -241,7 +241,7 @@ width=44% />
  • Accept Payments via dozens of integrated third-party payment providers.
  • Connect to Telegram using the Web Login functionality.
  • Create gaming bots by integrating HTML5 Games.
  • -
  • Help users create and manage Telegram Stickers.
  • +
  • Help users create and manage Telegram Stickers.
  • Web Apps

    Bots can easily process complex inputs of any kind and dynamic interaction flows via Web Apps. With this unique feature, you can develop any number of flexible, streamlined interfaces in JavaScript.

    @@ -344,7 +344,7 @@ width=44% /> diff --git a/data/web/blogfork.telegram.org/constructor/messageEntityMention.html b/data/web/blogfork.telegram.org/constructor/messageEntityMention.html index ffcdd94122..f171b8aa31 100644 --- a/data/web/blogfork.telegram.org/constructor/messageEntityMention.html +++ b/data/web/blogfork.telegram.org/constructor/messageEntityMention.html @@ -42,7 +42,7 @@

    messageEntityMention

    -

    Message entity mentioning the current user

    +

    Message entity mentioning a user by @username; messageEntityMentionName can also be used to mention users by their ID.

    +

    The server may consider that if the client has already sent in the next query using the data from the previous server response to the specific client, the response is known to have been received by the client and may be forgotten by the server.

    +

    Usage Example

    +

    An example of a complete list of queries required to generate an authorization key is shown on a separate page.

    diff --git a/data/web/blogfork.telegram.org/mtproto/samples-auth_key.html b/data/web/blogfork.telegram.org/mtproto/samples-auth_key.html index 6ebd9bad88..8c49ef5b26 100644 --- a/data/web/blogfork.telegram.org/mtproto/samples-auth_key.html +++ b/data/web/blogfork.telegram.org/mtproto/samples-auth_key.html @@ -44,7 +44,6 @@
    -

    In the examples below, the transport headers are omitted:

    For example, for the abridged version of the transport », the client sends 0xef as the first byte (important: only prior to the very first data packet), then the packet length is encoded with a single byte (0x01-0x7e = data length divided by 4; or 0x7f followed by 3 bytes (little endian) divided by 4) followed by the data itself. In this case, server responses have the same structure (although the server does not send 0xefas the first byte).

    @@ -54,9 +53,9 @@
    1) Client sends query to server

    Sent payload (excluding transport headers/trailers):

    -
    0000 | 00 00 00 00 00 00 00 00 84 8C 00 00 B1 AF 9C 64
    -0010 | 14 00 00 00 F1 8E 7E BE B0 BB 83 C2 68 49 38 B7
    -0020 | 6A C4 92 3A A5 45 C8 F0
    +
    0000 | 00 00 00 00 00 00 00 00 54 BC 00 00 FF 9A 9E 64
    +0010 | 14 00 00 00 F1 8E 7E BE DA 60 3B 0B 6C 74 D6 0E
    +0020 | C9 4A 04 D8 3A F2 02 7D

    Payload (de)serialization:

    req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
    @@ -78,8 +77,8 @@ - - + + @@ -96,7 +95,7 @@ - + @@ -105,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 9C 04 77 B1 AF 9C 64
    -0010 | 50 00 00 00 63 24 16 05 B0 BB 83 C2 68 49 38 B7
    -0020 | 6A C4 92 3A A5 45 C8 F0 59 2E 37 C5 BF 99 B8 DD
    -0030 | AE 33 E6 EE 39 4B 47 42 08 2E 07 1E 8F 6E F5 45
    -0040 | 63 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 64 63 C2 FF 9A 9E 64
    +0010 | 50 00 00 00 63 24 16 05 DA 60 3B 0B 6C 74 D6 0E
    +0020 | C9 4A 04 D8 3A F2 02 7D 8C 0C 71 9D 73 8B 75 78
    +0030 | 66 BA 31 F7 EF 43 97 39 08 1D 03 06 D7 8C 29 2A
    +0040 | 69 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:

    @@ -133,8 +132,8 @@
    - - + + @@ -151,19 +150,19 @@ - + - + - + @@ -209,22 +208,22 @@

    Proof of work

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

    Decompose into 2 prime cofactors: 3316653251972384099 = 1704206131 * 1946157329

    -
    p = 1704206131
    -q = 1946157329
    +
    pq = 2090522174869285481
    +

    Decompose into 2 prime cofactors p < q: 2090522174869285481 = 1112973847 * 1878321023

    +
    p = 1112973847
    +q = 1878321023

    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 2E 07 1E 8F 6E F5 45 63 00 00 00
    -0010 | 04 65 94 1F 33 00 00 00 04 74 00 01 11 00 00 00
    -0020 | B0 BB 83 C2 68 49 38 B7 6A C4 92 3A A5 45 C8 F0
    -0030 | 59 2E 37 C5 BF 99 B8 DD AE 33 E6 EE 39 4B 47 42
    -0040 | FA 05 D4 1E 4C C4 D7 94 58 F8 26 B2 33 4B 26 67
    -0050 | 5C C6 64 8E 23 E7 62 6B 75 A1 B9 09 98 1A C9 55
    +
    0000 | 95 5F F5 A9 08 1D 03 06 D7 8C 29 2A 69 00 00 00
    +0010 | 04 42 56 A2 17 00 00 00 04 6F F4 E7 7F 00 00 00
    +0020 | DA 60 3B 0B 6C 74 D6 0E C9 4A 04 D8 3A F2 02 7D
    +0030 | 8C 0C 71 9D 73 8B 75 78 66 BA 31 F7 EF 43 97 39
    +0040 | 0E 63 58 A8 84 41 7C 48 A8 81 CD B2 44 E1 CE 7D
    +0050 | 3F F7 C4 E4 4E 38 10 39 EF DC E2 57 66 F4 8C E4
     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;
    @@ -247,37 +246,37 @@ q = 1946157329
    - + - + - + - + - + - + @@ -292,39 +291,39 @@ q = 1946157329

    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 = 955FF5A9082E071E8F6EF545630000000465941F330000000474000111000000B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B4742FA05D41E4CC4D79458F826B2334B26675CC6648E23E7626B75A1B909981AC95502000000
    -random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D9118B8AB14EB6A100AA469AACCB3B9961D5E588C19A4E0C17F8C5CEDC003442FD0AECC129BFD6EEA4AD293FF753A0B194AB005F24E74FA78A98E10EAA2F16AD98
    +
    data = 955FF5A9081D0306D78C292A69000000044256A217000000046FF4E77F000000DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF4397390E6358A884417C48A881CDB244E1CE7D3FF7C4E44E381039EFDCE25766F48CE402000000
    +random_padding_bytes = 6A5F16CE16C2F010CF1F5B1305F4340A22E68A8BC48EC863A7F3FB907CBA6FFDE7C240684F1767F3ABECA72A65B6B737894D25CF280679407F569BD4F5A52BCEB645852B499E9A467DFFD015FC2AA75DE1AB51568B018CEE65999DD3

    And this is the output:

    -
    encrypted_data = DF92287F32BBAE22049A7DF88007F9FBE0103D8DF533E4ED59C0A25B6D99FA0A9F2C83A8E45C28B2C7AB6D541B38C6254FDE09B773B38ECDB94B660D71415CDFD4B8BAD8B91DC60B837BF4205A781AB77885D8E0EF71E329D4B9356302C4D2BE16E34A6A939559BE65EC2F0EFE2CD561E9B058A13B5C8EEEB6907DF897AA7E48BE7F7DE1D13058476C8EDF60A79330D0A9178E3FA064EF069063BC37AAA3CC1B5E0E347290E5C1197A10C01986035E20C0B106074C857906131ACE5F75900037E16F66FC0D0D62383412CE7D7A9DCC45AFC3025AD9976268664F4162581175139A2F0910C69CDFBE9DA93CAC8C3CA67A4278E2CD2A67EF9D9FF5D7F866E24596
    +
    encrypted_data = 978CD0DA71C89E58D5DD3A369FD23C91CDF29AE8DEF7D7FADC5303F2D7D0BF676E6408C20F9888167525245E891B2884D4894406FD34D0A3739BB89D8BEFC5982F4CE7D899CAD65156931C8048627A86C3549183D914CFFBCB3B39E2B719B1F243CEFBFEEB8E5EBCD0C343772500D27BA8CEB80A46FA4EEBD88435FDF979DF40938AC43C6947D55F7C3130122D5D90BAA23C03CDBD5EEDDF9D1F0D46054856E3A3F4A86E9BE4FF61E80FA5606A9A0D1F797DE334D6DE845B71C48544A5AC2ECEFC92F0194789C66085F6DBC1D81E6674A8CDAC6D1911BAEAE1279133C162A4091E04B85732AEBEC304C17DCD5A8637413EC2CAE8B00A06A2121179D4DBAACBB7

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

    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, 8848C0000B1AF9C64Message ID generated as specified here »54BC0000FF9A9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Random number
    message_id 8, 8019C0477B1AF9C64Message ID generated as specified here »016463C2FF9A9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Server-generated random number
    pq 56, 12082E071E8F6EF54563000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 3316653251972384099
    081D0306D78C292A69000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 2090522174869285481
    Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
    pq 4, 12082E071E8F6EF54563000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 3316653251972384099
    081D0306D78C292A69000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 2090522174869285481
    Single-byte prefix denoting length, 8-byte string, and three bytes of padding
    p 16, 80465941F33000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1704206131
    044256A217000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1112973847
    First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    q 24, 80474000111000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1946157329
    046FF4E77F000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1878321023
    Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    nonce 32, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 48, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    new_nonce 64, 32FA05D41E4CC4D79458F826B2334B2667 5CC6648E23E7626B75A1B909981AC9550E6358A884417C48A881CDB244E1CE7D 3FF7C4E44E381039EFDCE25766F48CE4 Client-generated random number
    @@ -346,8 +345,8 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - - + + @@ -364,25 +363,25 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - + - + - + - + @@ -394,7 +393,7 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - + @@ -403,47 +402,47 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91
    6) Server responds with:

    Received payload (excluding transport headers/trailers):

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

    Payload (de)serialization:

    server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
    message_id 8, 874070100B1AF9C64Message ID generated as specified here »9CA00900FF9A9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    p 56, 80465941F33000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1704206131
    044256A217000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1112973847
    First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    q 64, 80474000111000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1946157329
    046FF4E77F000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1878321023
    Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    encrypted_data 80, 260FE000100DF92287F32BBAE22049A7DF8 8007F9FBE0103D8DF533E4ED59C0A25B 6D99FA0A9F2C83A8E45C28B2C7AB6D54 1B38C6254FDE09B773B38ECDB94B660D 71415CDFD4B8BAD8B91DC60B837BF420 5A781AB77885D8E0EF71E329D4B93563 02C4D2BE16E34A6A939559BE65EC2F0E FE2CD561E9B058A13B5C8EEEB6907DF8 97AA7E48BE7F7DE1D13058476C8EDF60 A79330D0A9178E3FA064EF069063BC37 AAA3CC1B5E0E347290E5C1197A10C019 86035E20C0B106074C857906131ACE5F 75900037E16F66FC0D0D62383412CE7D 7A9DCC45AFC3025AD9976268664F4162 581175139A2F0910C69CDFBE9DA93CAC 8C3CA67A4278E2CD2A67EF9D9FF5D7F8
    66E24596
    FE000100978CD0DA71C89E58D5DD3A36 9FD23C91CDF29AE8DEF7D7FADC5303F2 D7D0BF676E6408C20F9888167525245E 891B2884D4894406FD34D0A3739BB89D 8BEFC5982F4CE7D899CAD65156931C80 48627A86C3549183D914CFFBCB3B39E2 B719B1F243CEFBFEEB8E5EBCD0C34377 2500D27BA8CEB80A46FA4EEBD88435FD F979DF40938AC43C6947D55F7C313012 2D5D90BAA23C03CDBD5EEDDF9D1F0D46 054856E3A3F4A86E9BE4FF61E80FA560 6A9A0D1F797DE334D6DE845B71C48544 A5AC2ECEFC92F0194789C66085F6DBC1 D81E6674A8CDAC6D1911BAEAE1279133 C162A4091E04B85732AEBEC304C17DCD 5A8637413EC2CAE8B00A06A2121179D4
    DBAACBB7
    Value generated above
    @@ -465,8 +464,8 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - - + + @@ -483,19 +482,19 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - + - + - + @@ -503,20 +502,20 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91

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

    -
    encrypted_answer = 073FF0CEBA1A9EF880F885E4D0E9C1EF93F61A18BD1BB78D7A36D3BF1B766E28139102C485BA0D47D383C8E6039DBBD378BAA64DC067F1604396DAA04D721E110D2308F495A534DE443006DE9176B4B8D927248402E16D69FC8F734854BAFBF806004E43269CA8C87291D4F8F436843A0CB3FD631FE4D7F41E8FAC2E34EF840BDAC03314248A4AF691ADAB7A0C6BDCCA3D85FD49E49AE6E518AF6DDA95CF034F90EB1B4250CDF603F58121BC3C4889E0C6730C89773A8D77C9FC7AF305C9F93BD83510FBF1B98ED70849615AD2C9497F9C8A944CB1D3A51AD10144B7777A4A5ED959FFE03B873D4CF010B361C62F7B423EEC02CACE0D280A6E341EA5BDAE28EFBA69D050581056356B7B6F66D9A9514416578842240BED8633381F0C4AB006C54B6029E58EAFA36F872EE7C95B5DF591C7C2686A3E61489FFB06F910AC03C5F456B9A3C34A5CCACE676E875CF3E76791C4AD88C31F9D6F43EF4E9EF48E0DBC301EF29D2EB38030705E1A0F25F2007D5412966638DC5114371A63082C81462C3B700EA5356E28923F5087AF051CFD8159B64B2ADC804E66CB70F6AD251721C6B8CA2F2168731432C967BC8BAEAD029640E80C2DC27AE03CFC5FC1173965F9CDF8C2931B6EC5D46351D7E79D33AFBE6C58663F3EADA5B2A49DF6CDE1C990786108116511DD9FC673E0559D84A55136C001830FE62C495C90398E9605494E24107C0267BDA129797B7B1ACF861C04F07D6BBA8B111F888611E5631EFF9716C406A7AE8BE2DDE1D873FB571C82088ABD18FE051F6E4AEE9B9094C63FAC38CA68B4EA46F12CD709DFDAC944ED46AF792FDBA2
    -tmp_aes_key = 3826079A7BBD2CC9B9AE0E9D1BEEDA1A663CE630DC446D259DE256A1C953E8FA
    -tmp_aes_iv = 7A6748BA29AAC95EF75BD4588351617832FD34568EF1C4018F04F871FA05D41E
    +
    encrypted_answer = A0352CC087EA1E380820F7C94661883208B6F39D47BADA5DC72B94D722F6F7C4194BD256B0754FBD65E2C2CA6428AB697A3CD2255C3C28967A0B833C1B51C9D573F2DEBCB9AE8EBF03F6C863557D44027F39608B2CA02FC98FEFCD0C1F315495E7ECC8B17A3347D66CFDE0353DE7EB421FE063B0C2E485DC3EF6EB7BAE574B21DDDBF7D273BFD08B0A17CFB9340DD2C9C4B6FFF24E02DE473222D0869ED1A22EC6593F3A6EB655072ACAB454DC1733A8BA64A2FAFCB9679D8F1A43204CBBF359605AFBA77F4F4B8986D8A84B357683380978BB66F7158C5A89ED75B107998E89516DD933DEDE35D2FA4F53DF4929541B4526FB1349381F96A857EEFB9DF26584FF516FD06B2367960A4E386D7DFA067E603041DB1ABD274828BD3D5FB7436DB2B1C25D8105F2108A48AE0BF4196524E683EC10CC3AB8CD58358C02AC41D926FF1ECD4A5F1936986BC97321BD4C88ED7B5F094B1E70B72B5EFC1D86E9824305195235F0E066F2DFA0BBD2488CC88BB57AC7895959CB1AFEBFB036FB9200E844D26031A14ABBF518B0893AFA4C29D7B06C690D5A7FD316CC920817D45E7EFEBFEBB589BA99F4104093296E9999B09EA66A72679ADDBACEC363D150E16DFB8D51C46E19505DC1539732DDD3CFF351BDCEB28AD3793C0DA308D12A313BD7D266BBBA88765E20F339220858439768072F26C4ABECCE48A5F899C526E5266F7A4A4EF2F3B08B5F53AB6B4590F9E0DF8B441005C80CE472E26831F864E0A9CE06C9DFFEC4E6013A26B823A83BA4643D5FDDB6DEEAF75DA30C87ABFE29F471DD827B399C6EC59D98CEEE1FD430196395885FDBF9
    +tmp_aes_key = FD36AB8054D1E2F02F5205DC00729025F859AB708409CE4F32E82FDA951B0D7A
    +tmp_aes_iv = 049A211296D24BE36D7FFA1E3C30904487A544973922E4930CD594630E6358A8

    Yielding:

    -
    answer_with_hash = 3C9D681E6DB06E8B9F3D3CA74BC92D7E67D227D0BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002FDAB5904B04F687AFF2E819845CF3BE57A147004CFFEF1C5DEA2574EB87C7A1462EAF356CBAD7B11BC1AAF4C64924555834B4E0FECB94118F21958824D8E0EB78FD33BA711806508E1EFA3BDB4520DBD4459CA6BAD3A8CD59874AE8295DBD0B6EC31C2A381406FCFBCA4031EDB433CDCF43551BEDAC54CBF8209542C22BC0D564FC8585945869AF496994DEE5E9B1E59C96020713B4B3AE90ED7DC68FD1DB5B81C2411E7C0E70893BC1A5804563D424AE95A453419AFFEB3B8A8AF7C9995041DDBB3117F105397B250C2FF1F565926000CC06E175B9A7078ABFA6383D0771822291D83BC82DCD16E991B4ACF7F9C17814F6715D3517F4E66401863418F16AABB2AF9C641C1005E08D6EEDB1
    -answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002FDAB5904B04F687AFF2E819845CF3BE57A147004CFFEF1C5DEA2574EB87C7A1462EAF356CBAD7B11BC1AAF4C64924555834B4E0FECB94118F21958824D8E0EB78FD33BA711806508E1EFA3BDB4520DBD4459CA6BAD3A8CD59874AE8295DBD0B6EC31C2A381406FCFBCA4031EDB433CDCF43551BEDAC54CBF8209542C22BC0D564FC8585945869AF496994DEE5E9B1E59C96020713B4B3AE90ED7DC68FD1DB5B81C2411E7C0E70893BC1A5804563D424AE95A453419AFFEB3B8A8AF7C9995041DDBB3117F105397B250C2FF1F565926000CC06E175B9A7078ABFA6383D0771822291D83BC82DCD16E991B4ACF7F9C17814F6715D3517F4E66401863418F16AABB2AF9C641C1005E08D6EEDB1
    +
    answer_with_hash = 46A914334DFF3DF06D9A1E5330BF60A105E40B07BA0D89B5DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF43973903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010035D6639175B1FF6E0AC40189370B3067AF8D52CEA7087E49E01707B5E6112CB33327267BD526CDCD1E971B0488E8C93510E86049B25F640170B02BDE609E83050E5FAB0654C03837E7832018152B11928E0F2E4C3327DBE2717E123CC5994EA0A6034CED7EAD34D99CA90D8940B2065897EBF617B9B1662E682053CDC75A31FD6D7B27B1B8FE868C8139752A4848A5493DFC71477009E0653D185051A7D6F6C3A59C2A89EC8B9BCDD87CB849893D709261D690E3843565DEB19B76B21FB8A0A28DE3BEA19869F1D73346909D17666F94778077C599761176248536A8BB944F4F73C366BF70A04D13326D227999E146C830A473FC9B1F3525263FE30B7D82C2B7009B9E644AD2ABF1F215707B
    +answer = BA0D89B5DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF43973903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010035D6639175B1FF6E0AC40189370B3067AF8D52CEA7087E49E01707B5E6112CB33327267BD526CDCD1E971B0488E8C93510E86049B25F640170B02BDE609E83050E5FAB0654C03837E7832018152B11928E0F2E4C3327DBE2717E123CC5994EA0A6034CED7EAD34D99CA90D8940B2065897EBF617B9B1662E682053CDC75A31FD6D7B27B1B8FE868C8139752A4848A5493DFC71477009E0653D185051A7D6F6C3A59C2A89EC8B9BCDD87CB849893D709261D690E3843565DEB19B76B21FB8A0A28DE3BEA19869F1D73346909D17666F94778077C599761176248536A8BB944F4F73C366BF70A04D13326D227999E146C830A473FC9B1F3525263FE30B7D82C2B7009B9E644AD2ABF1F215707B

    Generated payload (excluding transport headers/trailers):

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

    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, 80130871EB2AF9C64Message ID generated as specified here »0198C250009B9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    encrypted_answer 56, 596FE500200073FF0CEBA1A9EF880F885E4 D0E9C1EF93F61A18BD1BB78D7A36D3BF 1B766E28139102C485BA0D47D383C8E6 039DBBD378BAA64DC067F1604396DAA0 4D721E110D2308F495A534DE443006DE 9176B4B8D927248402E16D69FC8F7348 54BAFBF806004E43269CA8C87291D4F8 F436843A0CB3FD631FE4D7F41E8FAC2E 34EF840BDAC03314248A4AF691ADAB7A 0C6BDCCA3D85FD49E49AE6E518AF6DDA 95CF034F90EB1B4250CDF603F58121BC 3C4889E0C6730C89773A8D77C9FC7AF3 05C9F93BD83510FBF1B98ED70849615A D2C9497F9C8A944CB1D3A51AD10144B7 777A4A5ED959FFE03B873D4CF010B361 C62F7B423EEC02CACE0D280A6E341EA5 BDAE28EFBA69D050581056356B7B6F66 D9A9514416578842240BED8633381F0C 4AB006C54B6029E58EAFA36F872EE7C9 5B5DF591C7C2686A3E61489FFB06F910 AC03C5F456B9A3C34A5CCACE676E875C F3E76791C4AD88C31F9D6F43EF4E9EF4 8E0DBC301EF29D2EB38030705E1A0F25 F2007D5412966638DC5114371A63082C 81462C3B700EA5356E28923F5087AF05 1CFD8159B64B2ADC804E66CB70F6AD25 1721C6B8CA2F2168731432C967BC8BAE AD029640E80C2DC27AE03CFC5FC11739 65F9CDF8C2931B6EC5D46351D7E79D33 AFBE6C58663F3EADA5B2A49DF6CDE1C9 90786108116511DD9FC673E0559D84A5 5136C001830FE62C495C90398E960549 4E24107C0267BDA129797B7B1ACF861C 04F07D6BBA8B111F888611E5631EFF97 16C406A7AE8BE2DDE1D873FB571C8208 8ABD18FE051F6E4AEE9B9094C63FAC38 CA68B4EA46F12CD709DFDAC944ED46AF
    792FDBA2
    FE500200A0352CC087EA1E380820F7C9 4661883208B6F39D47BADA5DC72B94D7 22F6F7C4194BD256B0754FBD65E2C2CA 6428AB697A3CD2255C3C28967A0B833C 1B51C9D573F2DEBCB9AE8EBF03F6C863 557D44027F39608B2CA02FC98FEFCD0C 1F315495E7ECC8B17A3347D66CFDE035 3DE7EB421FE063B0C2E485DC3EF6EB7B AE574B21DDDBF7D273BFD08B0A17CFB9 340DD2C9C4B6FFF24E02DE473222D086 9ED1A22EC6593F3A6EB655072ACAB454 DC1733A8BA64A2FAFCB9679D8F1A4320 4CBBF359605AFBA77F4F4B8986D8A84B 357683380978BB66F7158C5A89ED75B1 07998E89516DD933DEDE35D2FA4F53DF 4929541B4526FB1349381F96A857EEFB 9DF26584FF516FD06B2367960A4E386D 7DFA067E603041DB1ABD274828BD3D5F B7436DB2B1C25D8105F2108A48AE0BF4 196524E683EC10CC3AB8CD58358C02AC 41D926FF1ECD4A5F1936986BC97321BD 4C88ED7B5F094B1E70B72B5EFC1D86E9 824305195235F0E066F2DFA0BBD2488C C88BB57AC7895959CB1AFEBFB036FB92 00E844D26031A14ABBF518B0893AFA4C 29D7B06C690D5A7FD316CC920817D45E 7EFEBFEBB589BA99F4104093296E9999 B09EA66A72679ADDBACEC363D150E16D FB8D51C46E19505DC1539732DDD3CFF3 51BDCEB28AD3793C0DA308D12A313BD7 D266BBBA88765E20F339220858439768 072F26C4ABECCE48A5F899C526E5266F 7A4A4EF2F3B08B5F53AB6B4590F9E0DF 8B441005C80CE472E26831F864E0A9CE 06C9DFFEC4E6013A26B823A83BA4643D 5FDDB6DEEAF75DA30C87ABFE29F471DD 827B399C6EC59D98CEEE1FD430196395
    885FDBF9
    See below
    @@ -571,13 +570,13 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474 - + - + @@ -595,13 +594,13 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474 - + - + @@ -610,34 +609,34 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474
    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 = 29F2FD3102D844146B82E7C115C554A80961BC260BCA739BB670787AF0A72A512BA2E47AD58D0C478415251E4D0F7A737C2BF06A364C6E995ED596C88F4685F412B60205ECB9FA3ECA18A5B7B2DBEF3F26614806067E2F5831BB9CFF38278A25BB79A8F081A9E72E92CF74DE524DFBC07B6F5F77DF5F1EFF385E0B943282DF43A220AF62387F662982CCEDB59302EAD733438089FE871856F3C6E9221198094EA76E20868AEC4A7D7C809223CB28627DF3A05961B5148BE043CC64ECA1BFCC427F476E8A6769CDD7F5B774311BC166DB8FEC80E7C2BB9DF3B391D5D441B6BB35F0828BB9A22C9151FC63F1F3C04517C127A0BB98A2850867D7074E8D0C2FC576
    +
    b = F7C5CD46D4A88DED59C1B412D39FEC78BD86A6DC2BF2C5C5D8AF305204158F14B3244D42FFCF2363DC0D25DC6C48A16A3A0E63813D9E87442CA3C2CF84DF848C540531FCDBAD8290A6B25E021EB9AAEEB702F6FB31DC39C48EF615BB0CBBEDE1958D8BF5DCC205CBED3A9DFCD597115163A131DFD4939E68EB2C6F097A5632A3773D5201783A3B6CDE805794F5CBEEFD9FCB8DEAEAD1C5BCADD6366C8A907FABE99A026E59E8521085CE6130123E80B72DFD5EF3D2C0BC880F52DEEF7404638D8053D464036BF7057A77BE75EDA78D3C82221BB131FE6ECB8C43F77DF1D04935F978BA40F3F59385D6D6C2E7782BFFB040AB60F28459EB68A42A904B55E8088C

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

    -
    g_b = 69A19DF1CA7E2F7EB2D1C4FB9BA2856EF2AA19510669FF991757F7A3A10AA176A81CBD993DC7BD794C4E169056601BABFFE5C1A8DC6BCB705BB24BDB5E17280D26DAF0A9A801558CB87A11E30D6E8DD29CC039D014EA819CD0F8148CBA1BDB21331FFCB6063ED8FB66A6E90A02A80B68CDE53CB45D1266E8C19617FDD5AFD824001FD16BF666A1946B54B45C751CDD535B3718C6BE7A2EBAD4B35F5CA61D128B5B10ED4223C08D7294FCE18C8D30B5CFC8D73A80469150F7180F5F76F4FEAA0156EFA7665BB37F87B5F9EEAA654550555C05F91342608BB76F1E394EA6C51CE64589540E8729F9F5AE1B33108E8D35233ABFEE824AA2B940C5F04335CA59E0C4
    +
    g_b = 2545CE89DAD14BDF0F1E2E34F366124474E221B5C2019CF5240612B81798311E9ED33201DE78EA34B59DC0151E4CF820DEEC3850E1B08114B7599A1C99F28A85234ABCF8DC8BE8AB0CD1019EC56AB7BB2E05F07B7656338BE254ABB2F45AD42A86848E602B04A6B9CC9262780D4F87505A8B17191F53E72BDB00AB290B76810EB15C873183D72EC3D2CB411C3F4BDC7944E1CABF5571B152F7FC3CA1DA470977329DC49854BA62A85AE7645FECBD8183B5A4AAD06DFC56D4BA6106F81A45BEF32A9E4F56A213FB2A027B3ACDFDDDE6A6D57E68352C82F7C0D2108FC010725929CB7C88EE737F7B498D86134C7C7F2626F0357067A07813C0D3F2C86876CC1FF1
    7.1) generation of encrypted_data

    Generated payload (excluding transport headers/trailers):

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

    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, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 20, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    g_a 300, 260FE0001002FDAB5904B04F687AFF2E819 845CF3BE57A147004CFFEF1C5DEA2574 EB87C7A1462EAF356CBAD7B11BC1AAF4 C64924555834B4E0FECB94118F219588 24D8E0EB78FD33BA711806508E1EFA3B DB4520DBD4459CA6BAD3A8CD59874AE8 295DBD0B6EC31C2A381406FCFBCA4031 EDB433CDCF43551BEDAC54CBF8209542 C22BC0D564FC8585945869AF496994DE E5E9B1E59C96020713B4B3AE90ED7DC6 8FD1DB5B81C2411E7C0E70893BC1A580 4563D424AE95A453419AFFEB3B8A8AF7 C9995041DDBB3117F105397B250C2FF1 F565926000CC06E175B9A7078ABFA638 3D0771822291D83BC82DCD16E991B4AC F7F9C17814F6715D3517F4E664018634
    18F16AAB
    FE00010035D6639175B1FF6E0AC40189 370B3067AF8D52CEA7087E49E01707B5 E6112CB33327267BD526CDCD1E971B04 88E8C93510E86049B25F640170B02BDE 609E83050E5FAB0654C03837E7832018 152B11928E0F2E4C3327DBE2717E123C C5994EA0A6034CED7EAD34D99CA90D89 40B2065897EBF617B9B1662E682053CD C75A31FD6D7B27B1B8FE868C8139752A 4848A5493DFC71477009E0653D185051 A7D6F6C3A59C2A89EC8B9BCDD87CB849 893D709261D690E3843565DEB19B76B2 1FB8A0A28DE3BEA19869F1D73346909D 17666F94778077C599761176248536A8 BB944F4F73C366BF70A04D13326D2279 99E146C830A473FC9B1F3525263FE30B
    7D82C2B7
    g_a diffie-hellman parameter
    server_time 560, 4B2AF9C64 (1687990194 in decimal)009B9E64 (1688115968 in decimal) Server time
    @@ -659,19 +658,19 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474 - + - + - + @@ -685,47 +684,47 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474

    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 = 54B64366B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B47420000000000000000FE00010069A19DF1CA7E2F7EB2D1C4FB9BA2856EF2AA19510669FF991757F7A3A10AA176A81CBD993DC7BD794C4E169056601BABFFE5C1A8DC6BCB705BB24BDB5E17280D26DAF0A9A801558CB87A11E30D6E8DD29CC039D014EA819CD0F8148CBA1BDB21331FFCB6063ED8FB66A6E90A02A80B68CDE53CB45D1266E8C19617FDD5AFD824001FD16BF666A1946B54B45C751CDD535B3718C6BE7A2EBAD4B35F5CA61D128B5B10ED4223C08D7294FCE18C8D30B5CFC8D73A80469150F7180F5F76F4FEAA0156EFA7665BB37F87B5F9EEAA654550555C05F91342608BB76F1E394EA6C51CE64589540E8729F9F5AE1B33108E8D35233ABFEE824AA2B940C5F04335CA59E0C4
    -padding = 4670CB59FFB7033A86C62AA9
    -tmp_aes_key = 3826079A7BBD2CC9B9AE0E9D1BEEDA1A663CE630DC446D259DE256A1C953E8FA
    -tmp_aes_iv = 7A6748BA29AAC95EF75BD4588351617832FD34568EF1C4018F04F871FA05D41E
    +
    data = 54B64366DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF4397390000000000000000FE0001002545CE89DAD14BDF0F1E2E34F366124474E221B5C2019CF5240612B81798311E9ED33201DE78EA34B59DC0151E4CF820DEEC3850E1B08114B7599A1C99F28A85234ABCF8DC8BE8AB0CD1019EC56AB7BB2E05F07B7656338BE254ABB2F45AD42A86848E602B04A6B9CC9262780D4F87505A8B17191F53E72BDB00AB290B76810EB15C873183D72EC3D2CB411C3F4BDC7944E1CABF5571B152F7FC3CA1DA470977329DC49854BA62A85AE7645FECBD8183B5A4AAD06DFC56D4BA6106F81A45BEF32A9E4F56A213FB2A027B3ACDFDDDE6A6D57E68352C82F7C0D2108FC010725929CB7C88EE737F7B498D86134C7C7F2626F0357067A07813C0D3F2C86876CC1FF1
    +padding = BD8A6AC82FFB68885A48E0ED
    +tmp_aes_key = FD36AB8054D1E2F02F5205DC00729025F859AB708409CE4F32E82FDA951B0D7A
    +tmp_aes_iv = 049A211296D24BE36D7FFA1E3C30904487A544973922E4930CD594630E6358A8

    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 = B157BF3596956D48DF20A9E10AB507971128D20530E7E3B6087FB1BA74DBE774DE8C5A1AC9D01F70868ED3681FC694F30CE358FC74B854DB48143196F4555CB22721DB87E83D14286CBFB54F4C18F51C9EB719C5924B4E546D6B073C68BA93198FB7A91FB4538E88F6DA2DCCF3734F7EA0112595DEDD6E69C38A5F70E1507069C26E847FB39EEF4BE96863A898FB521117DA5289CAD8F26F3D912D3314A3D4E54D81202AB36ED3625704730BCB495D3464433CB2CC51D1A355AD788C04084CFF69AEAA9AC6282785192BE1C7C1E4AC14E91358056E1A4BC2B0D5E9840F19F70257AD7975DAC3338C5B393835296E51D4845C07962A58F88EE2E2E67C46B1F44CBCA4624D6BD8CC3BA6B59B635CAFF706893E6368404F0475975F652D4C7C69C4E8FA88A9023BB89895823132B3408C0326A4FE9EE68ADEBC56768F0329C9DB79108F080FCEE326135F10E4F89E4C9EF5
    +
    encrypted_data = E3B5716AC2E86342AD2E8C7B75FD17C713CE5C8559659F8301258D63D9101D1DB99EA9C1909315495C8776FD7885CA40AB860F38C8BD946F90CCEC63F3ED2A5A8F06F4E45BFDD0CC4A626AF74C299623B64E8E384BB7A66C36483EA667CE513FB5C2B9C7C635206E824F6BFC45A259CE0692745EBF3FDE3DEE350903FC0E2FF821DAECDF333B23F77866A444E2AC3B1BC8CC2EA38D4C2C3FF375FF70CFAF76E35BE863D54969CF4A887C8D6223874017B4B509CF3DE096E288512FBEF295D4DE4CC3CA6EAEA779B07100D8CC9E2EF7A6B40575CCC5EC93E32E7F8E4FD7332737F3B179573B4BEC13ABD868CC06A725ECFFC29494FE6AFFD3CEF2DE94681D4A3F19DDE0CF9BB0F13974443EA04D6CE173E0655BAFC847B5D55393BE982E00903B557B61FB38F15A88CADA345BC8B7820BB1C051C0A8B13AE70A5479E87D6BCA8A7AA73C306AF0FACD6760C566014DE790

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

    Payload (de)serialization:

    set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
    nonce 4, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 20, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    g_b 36, 260FE00010069A19DF1CA7E2F7EB2D1C4FB 9BA2856EF2AA19510669FF991757F7A3 A10AA176A81CBD993DC7BD794C4E1690 56601BABFFE5C1A8DC6BCB705BB24BDB 5E17280D26DAF0A9A801558CB87A11E3 0D6E8DD29CC039D014EA819CD0F8148C BA1BDB21331FFCB6063ED8FB66A6E90A 02A80B68CDE53CB45D1266E8C19617FD D5AFD824001FD16BF666A1946B54B45C 751CDD535B3718C6BE7A2EBAD4B35F5C A61D128B5B10ED4223C08D7294FCE18C 8D30B5CFC8D73A80469150F7180F5F76 F4FEAA0156EFA7665BB37F87B5F9EEAA 654550555C05F91342608BB76F1E394E A6C51CE64589540E8729F9F5AE1B3310 8E8D35233ABFEE824AA2B940C5F04335
    CA59E0C4
    FE0001002545CE89DAD14BDF0F1E2E34 F366124474E221B5C2019CF5240612B8 1798311E9ED33201DE78EA34B59DC015 1E4CF820DEEC3850E1B08114B7599A1C 99F28A85234ABCF8DC8BE8AB0CD1019E C56AB7BB2E05F07B7656338BE254ABB2 F45AD42A86848E602B04A6B9CC926278 0D4F87505A8B17191F53E72BDB00AB29 0B76810EB15C873183D72EC3D2CB411C 3F4BDC7944E1CABF5571B152F7FC3CA1 DA470977329DC49854BA62A85AE7645F ECBD8183B5A4AAD06DFC56D4BA6106F8 1A45BEF32A9E4F56A213FB2A027B3ACD FDDDE6A6D57E68352C82F7C0D2108FC0 10725929CB7C88EE737F7B498D86134C 7C7F2626F0357067A07813C0D3F2C868
    76CC1FF1
    Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding
    @@ -747,8 +746,8 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - - + + @@ -765,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - + @@ -786,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 = 4B2FB207D87D159C14CFBC094533E4305721FD3F8CF1F4C2E218481DAD5BDE4BD687064C86A2F9B15DDF2EB43F6558C7EF91B99FADF614711AEDC6BBAE02F10B97EC40B81837695E58F11F2FAC48E949AF2DBC35E3A8476FF2C8C1CA85835634BEA918657C9801AD8876E8319C02ADF9209EAF5A3D429560D98816943C3019971B67372E146106CD27FB110A589DA8890F43348AF77143AFFCB08BEBEF89BD14BBFECC6AFE2B028C4BEC26ADC3D6786DABFF738CDAEBFE2D15806977DB496736716CD0B64938F1AEC6911FB56B70CC86BFB458048E970CD28E2F3844B7082493C1D46C0EA0AA798068C4160DA2C2D7562A6160255C6A1D7C3C47B7B8DD1C6D55
    +
    auth_key = 48892B997A14A133B6D5B234A7F9B19DCE70CB192B9238372639DD6230B1BCC8D31BBBCCFA7F00BBEF38303BAE50FFF3DC814333123CE6E5980EF4493A74F38AD6B05B6737E296ADF4C97C69C95C5EC840BC22694F4CBFC14598B28F83B5CD79FE881F6AB9615226DF63078688371B3CDD2F6E97B35D17E6710E29469E1476B596C1DE136F05D585290776B306D6946B1C33374A459ECB0E9BFBC5A43D145A6B37C276E94C840EA0950B0B2523744CD538817DBA33CD6C84175AEA8561EBA117D2589EFB30A304B0F7AF29FF141E6B3F6F9FA5CEFF31DF1166937EA07D850427B6D779BBAB5B062526D435206EA25158EABC659DE3DC5E4ABF0D93B87B35E5E7
    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 60 9B 67 B2 AF 9C 64
    -0010 | 34 00 00 00 34 F7 CB 3B B0 BB 83 C2 68 49 38 B7
    -0020 | 6A C4 92 3A A5 45 C8 F0 59 2E 37 C5 BF 99 B8 DD
    -0030 | AE 33 E6 EE 39 4B 47 42 6A F1 5D D5 EA 4A 58 6A
    -0040 | 27 E0 A1 DC 7E 26 D2 C4
    +
    0000 | 00 00 00 00 00 00 00 00 01 84 8C 9F 00 9B 9E 64
    +0010 | 34 00 00 00 34 F7 CB 3B DA 60 3B 0B 6C 74 D6 0E
    +0020 | C9 4A 04 D8 3A F2 02 7D 8C 0C 71 9D 73 8B 75 78
    +0030 | 66 BA 31 F7 EF 43 97 39 B0 91 C6 77 C6 99 6C 09
    +0040 | FF 59 F2 F9 AB 28 16 78

    Payload (de)serialization:

    dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
    message_id 8, 8BCD60900B2AF9C64Message ID generated as specified here »E8300F00009B9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    encrypted_data 56, 340FE500100B157BF3596956D48DF20A9E1 0AB507971128D20530E7E3B6087FB1BA 74DBE774DE8C5A1AC9D01F70868ED368 1FC694F30CE358FC74B854DB48143196 F4555CB22721DB87E83D14286CBFB54F 4C18F51C9EB719C5924B4E546D6B073C 68BA93198FB7A91FB4538E88F6DA2DCC F3734F7EA0112595DEDD6E69C38A5F70 E1507069C26E847FB39EEF4BE96863A8 98FB521117DA5289CAD8F26F3D912D33 14A3D4E54D81202AB36ED3625704730B CB495D3464433CB2CC51D1A355AD788C 04084CFF69AEAA9AC6282785192BE1C7 C1E4AC14E91358056E1A4BC2B0D5E984 0F19F70257AD7975DAC3338C5B393835 296E51D4845C07962A58F88EE2E2E67C 46B1F44CBCA4624D6BD8CC3BA6B59B63 5CAFF706893E6368404F0475975F652D 4C7C69C4E8FA88A9023BB89895823132 B3408C0326A4FE9EE68ADEBC56768F03 29C9DB79108F080FCEE326135F10E4F8
    9E4C9EF5
    FE500100E3B5716AC2E86342AD2E8C7B 75FD17C713CE5C8559659F8301258D63 D9101D1DB99EA9C1909315495C8776FD 7885CA40AB860F38C8BD946F90CCEC63 F3ED2A5A8F06F4E45BFDD0CC4A626AF7 4C299623B64E8E384BB7A66C36483EA6 67CE513FB5C2B9C7C635206E824F6BFC 45A259CE0692745EBF3FDE3DEE350903 FC0E2FF821DAECDF333B23F77866A444 E2AC3B1BC8CC2EA38D4C2C3FF375FF70 CFAF76E35BE863D54969CF4A887C8D62 23874017B4B509CF3DE096E288512FBE F295D4DE4CC3CA6EAEA779B07100D8CC 9E2EF7A6B40575CCC5EC93E32E7F8E4F D7332737F3B179573B4BEC13ABD868CC 06A725ECFFC29494FE6AFFD3CEF2DE94 681D4A3F19DDE0CF9BB0F13974443EA0 4D6CE173E0655BAFC847B5D55393BE98 2E00903B557B61FB38F15A88CADA345B C8B7820BB1C051C0A8B13AE70A5479E8 7D6BCA8A7AA73C306AF0FACD6760C566
    014DE790
    Encrypted client_DH_inner_data generated previously, serialized as a TL byte string
    @@ -818,8 +817,8 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - - + + @@ -836,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - + @@ -920,8 +919,11 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - - + + + diff --git a/data/web/core.telegram.org/constructor/messageEntityMention.html b/data/web/core.telegram.org/constructor/messageEntityMention.html index ffcdd94122..f171b8aa31 100644 --- a/data/web/core.telegram.org/constructor/messageEntityMention.html +++ b/data/web/core.telegram.org/constructor/messageEntityMention.html @@ -42,7 +42,7 @@

    messageEntityMention

    -

    Message entity mentioning the current user

    +

    Message entity mentioning a user by @username; messageEntityMentionName can also be used to mention users by their ID.

    +

    The server may consider that if the client has already sent in the next query using the data from the previous server response to the specific client, the response is known to have been received by the client and may be forgotten by the server.

    +

    Usage Example

    +

    An example of a complete list of queries required to generate an authorization key is shown on a separate page.

    diff --git a/data/web/core.telegram.org/mtproto/samples-auth_key.html b/data/web/core.telegram.org/mtproto/samples-auth_key.html index 6ebd9bad88..8c49ef5b26 100644 --- a/data/web/core.telegram.org/mtproto/samples-auth_key.html +++ b/data/web/core.telegram.org/mtproto/samples-auth_key.html @@ -44,7 +44,6 @@
    -

    In the examples below, the transport headers are omitted:

    For example, for the abridged version of the transport », the client sends 0xef as the first byte (important: only prior to the very first data packet), then the packet length is encoded with a single byte (0x01-0x7e = data length divided by 4; or 0x7f followed by 3 bytes (little endian) divided by 4) followed by the data itself. In this case, server responses have the same structure (although the server does not send 0xefas the first byte).

    @@ -54,9 +53,9 @@
    1) Client sends query to server

    Sent payload (excluding transport headers/trailers):

    -
    0000 | 00 00 00 00 00 00 00 00 84 8C 00 00 B1 AF 9C 64
    -0010 | 14 00 00 00 F1 8E 7E BE B0 BB 83 C2 68 49 38 B7
    -0020 | 6A C4 92 3A A5 45 C8 F0
    +
    0000 | 00 00 00 00 00 00 00 00 54 BC 00 00 FF 9A 9E 64
    +0010 | 14 00 00 00 F1 8E 7E BE DA 60 3B 0B 6C 74 D6 0E
    +0020 | C9 4A 04 D8 3A F2 02 7D

    Payload (de)serialization:

    req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
    message_id 8, 801609B67B2AF9C64Message ID generated as specified here »01848C9F009B9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    new_nonce_hash1 56, 166AF15DD5EA4A586A27E0A1DC7E26D2C4B091C677C6996C09FF59F2F9AB281678 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.
    @@ -78,8 +77,8 @@ - - + + @@ -96,7 +95,7 @@ - + @@ -105,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 9C 04 77 B1 AF 9C 64
    -0010 | 50 00 00 00 63 24 16 05 B0 BB 83 C2 68 49 38 B7
    -0020 | 6A C4 92 3A A5 45 C8 F0 59 2E 37 C5 BF 99 B8 DD
    -0030 | AE 33 E6 EE 39 4B 47 42 08 2E 07 1E 8F 6E F5 45
    -0040 | 63 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 64 63 C2 FF 9A 9E 64
    +0010 | 50 00 00 00 63 24 16 05 DA 60 3B 0B 6C 74 D6 0E
    +0020 | C9 4A 04 D8 3A F2 02 7D 8C 0C 71 9D 73 8B 75 78
    +0030 | 66 BA 31 F7 EF 43 97 39 08 1D 03 06 D7 8C 29 2A
    +0040 | 69 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:

    @@ -133,8 +132,8 @@
    - - + + @@ -151,19 +150,19 @@ - + - + - + @@ -209,22 +208,22 @@

    Proof of work

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

    Decompose into 2 prime cofactors: 3316653251972384099 = 1704206131 * 1946157329

    -
    p = 1704206131
    -q = 1946157329
    +
    pq = 2090522174869285481
    +

    Decompose into 2 prime cofactors p < q: 2090522174869285481 = 1112973847 * 1878321023

    +
    p = 1112973847
    +q = 1878321023

    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 2E 07 1E 8F 6E F5 45 63 00 00 00
    -0010 | 04 65 94 1F 33 00 00 00 04 74 00 01 11 00 00 00
    -0020 | B0 BB 83 C2 68 49 38 B7 6A C4 92 3A A5 45 C8 F0
    -0030 | 59 2E 37 C5 BF 99 B8 DD AE 33 E6 EE 39 4B 47 42
    -0040 | FA 05 D4 1E 4C C4 D7 94 58 F8 26 B2 33 4B 26 67
    -0050 | 5C C6 64 8E 23 E7 62 6B 75 A1 B9 09 98 1A C9 55
    +
    0000 | 95 5F F5 A9 08 1D 03 06 D7 8C 29 2A 69 00 00 00
    +0010 | 04 42 56 A2 17 00 00 00 04 6F F4 E7 7F 00 00 00
    +0020 | DA 60 3B 0B 6C 74 D6 0E C9 4A 04 D8 3A F2 02 7D
    +0030 | 8C 0C 71 9D 73 8B 75 78 66 BA 31 F7 EF 43 97 39
    +0040 | 0E 63 58 A8 84 41 7C 48 A8 81 CD B2 44 E1 CE 7D
    +0050 | 3F F7 C4 E4 4E 38 10 39 EF DC E2 57 66 F4 8C E4
     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;
    @@ -247,37 +246,37 @@ q = 1946157329
    - + - + - + - + - + - + @@ -292,39 +291,39 @@ q = 1946157329

    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 = 955FF5A9082E071E8F6EF545630000000465941F330000000474000111000000B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B4742FA05D41E4CC4D79458F826B2334B26675CC6648E23E7626B75A1B909981AC95502000000
    -random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D9118B8AB14EB6A100AA469AACCB3B9961D5E588C19A4E0C17F8C5CEDC003442FD0AECC129BFD6EEA4AD293FF753A0B194AB005F24E74FA78A98E10EAA2F16AD98
    +
    data = 955FF5A9081D0306D78C292A69000000044256A217000000046FF4E77F000000DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF4397390E6358A884417C48A881CDB244E1CE7D3FF7C4E44E381039EFDCE25766F48CE402000000
    +random_padding_bytes = 6A5F16CE16C2F010CF1F5B1305F4340A22E68A8BC48EC863A7F3FB907CBA6FFDE7C240684F1767F3ABECA72A65B6B737894D25CF280679407F569BD4F5A52BCEB645852B499E9A467DFFD015FC2AA75DE1AB51568B018CEE65999DD3

    And this is the output:

    -
    encrypted_data = DF92287F32BBAE22049A7DF88007F9FBE0103D8DF533E4ED59C0A25B6D99FA0A9F2C83A8E45C28B2C7AB6D541B38C6254FDE09B773B38ECDB94B660D71415CDFD4B8BAD8B91DC60B837BF4205A781AB77885D8E0EF71E329D4B9356302C4D2BE16E34A6A939559BE65EC2F0EFE2CD561E9B058A13B5C8EEEB6907DF897AA7E48BE7F7DE1D13058476C8EDF60A79330D0A9178E3FA064EF069063BC37AAA3CC1B5E0E347290E5C1197A10C01986035E20C0B106074C857906131ACE5F75900037E16F66FC0D0D62383412CE7D7A9DCC45AFC3025AD9976268664F4162581175139A2F0910C69CDFBE9DA93CAC8C3CA67A4278E2CD2A67EF9D9FF5D7F866E24596
    +
    encrypted_data = 978CD0DA71C89E58D5DD3A369FD23C91CDF29AE8DEF7D7FADC5303F2D7D0BF676E6408C20F9888167525245E891B2884D4894406FD34D0A3739BB89D8BEFC5982F4CE7D899CAD65156931C8048627A86C3549183D914CFFBCB3B39E2B719B1F243CEFBFEEB8E5EBCD0C343772500D27BA8CEB80A46FA4EEBD88435FDF979DF40938AC43C6947D55F7C3130122D5D90BAA23C03CDBD5EEDDF9D1F0D46054856E3A3F4A86E9BE4FF61E80FA5606A9A0D1F797DE334D6DE845B71C48544A5AC2ECEFC92F0194789C66085F6DBC1D81E6674A8CDAC6D1911BAEAE1279133C162A4091E04B85732AEBEC304C17DCD5A8637413EC2CAE8B00A06A2121179D4DBAACBB7

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

    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, 8848C0000B1AF9C64Message ID generated as specified here »54BC0000FF9A9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Random number
    message_id 8, 8019C0477B1AF9C64Message ID generated as specified here »016463C2FF9A9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Server-generated random number
    pq 56, 12082E071E8F6EF54563000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 3316653251972384099
    081D0306D78C292A69000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 2090522174869285481
    Single-byte prefix denoting length, an 8-byte string, and three bytes of padding
    pq 4, 12082E071E8F6EF54563000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 3316653251972384099
    081D0306D78C292A69000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 2090522174869285481
    Single-byte prefix denoting length, 8-byte string, and three bytes of padding
    p 16, 80465941F33000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1704206131
    044256A217000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1112973847
    First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    q 24, 80474000111000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1946157329
    046FF4E77F000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1878321023
    Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    nonce 32, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 48, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    new_nonce 64, 32FA05D41E4CC4D79458F826B2334B2667 5CC6648E23E7626B75A1B909981AC9550E6358A884417C48A881CDB244E1CE7D 3FF7C4E44E381039EFDCE25766F48CE4 Client-generated random number
    @@ -346,8 +345,8 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - - + + @@ -364,25 +363,25 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - + - + - + - + @@ -394,7 +393,7 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - + @@ -403,47 +402,47 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91
    6) Server responds with:

    Received payload (excluding transport headers/trailers):

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

    Payload (de)serialization:

    server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
    message_id 8, 874070100B1AF9C64Message ID generated as specified here »9CA00900FF9A9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    p 56, 80465941F33000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1704206131
    044256A217000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1112973847
    First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    q 64, 80474000111000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1946157329
    046FF4E77F000000
    TL byte deserialization
    => bigendian conversion to decimal
    => 1878321023
    Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding
    encrypted_data 80, 260FE000100DF92287F32BBAE22049A7DF8 8007F9FBE0103D8DF533E4ED59C0A25B 6D99FA0A9F2C83A8E45C28B2C7AB6D54 1B38C6254FDE09B773B38ECDB94B660D 71415CDFD4B8BAD8B91DC60B837BF420 5A781AB77885D8E0EF71E329D4B93563 02C4D2BE16E34A6A939559BE65EC2F0E FE2CD561E9B058A13B5C8EEEB6907DF8 97AA7E48BE7F7DE1D13058476C8EDF60 A79330D0A9178E3FA064EF069063BC37 AAA3CC1B5E0E347290E5C1197A10C019 86035E20C0B106074C857906131ACE5F 75900037E16F66FC0D0D62383412CE7D 7A9DCC45AFC3025AD9976268664F4162 581175139A2F0910C69CDFBE9DA93CAC 8C3CA67A4278E2CD2A67EF9D9FF5D7F8
    66E24596
    FE000100978CD0DA71C89E58D5DD3A36 9FD23C91CDF29AE8DEF7D7FADC5303F2 D7D0BF676E6408C20F9888167525245E 891B2884D4894406FD34D0A3739BB89D 8BEFC5982F4CE7D899CAD65156931C80 48627A86C3549183D914CFFBCB3B39E2 B719B1F243CEFBFEEB8E5EBCD0C34377 2500D27BA8CEB80A46FA4EEBD88435FD F979DF40938AC43C6947D55F7C313012 2D5D90BAA23C03CDBD5EEDDF9D1F0D46 054856E3A3F4A86E9BE4FF61E80FA560 6A9A0D1F797DE334D6DE845B71C48544 A5AC2ECEFC92F0194789C66085F6DBC1 D81E6674A8CDAC6D1911BAEAE1279133 C162A4091E04B85732AEBEC304C17DCD 5A8637413EC2CAE8B00A06A2121179D4
    DBAACBB7
    Value generated above
    @@ -465,8 +464,8 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - - + + @@ -483,19 +482,19 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91 - + - + - + @@ -503,20 +502,20 @@ random_padding_bytes = 2F9E22AC78033569C4B3F7035D5FFAFC3EBF28ECD70A65926B2E64D91

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

    -
    encrypted_answer = 073FF0CEBA1A9EF880F885E4D0E9C1EF93F61A18BD1BB78D7A36D3BF1B766E28139102C485BA0D47D383C8E6039DBBD378BAA64DC067F1604396DAA04D721E110D2308F495A534DE443006DE9176B4B8D927248402E16D69FC8F734854BAFBF806004E43269CA8C87291D4F8F436843A0CB3FD631FE4D7F41E8FAC2E34EF840BDAC03314248A4AF691ADAB7A0C6BDCCA3D85FD49E49AE6E518AF6DDA95CF034F90EB1B4250CDF603F58121BC3C4889E0C6730C89773A8D77C9FC7AF305C9F93BD83510FBF1B98ED70849615AD2C9497F9C8A944CB1D3A51AD10144B7777A4A5ED959FFE03B873D4CF010B361C62F7B423EEC02CACE0D280A6E341EA5BDAE28EFBA69D050581056356B7B6F66D9A9514416578842240BED8633381F0C4AB006C54B6029E58EAFA36F872EE7C95B5DF591C7C2686A3E61489FFB06F910AC03C5F456B9A3C34A5CCACE676E875CF3E76791C4AD88C31F9D6F43EF4E9EF48E0DBC301EF29D2EB38030705E1A0F25F2007D5412966638DC5114371A63082C81462C3B700EA5356E28923F5087AF051CFD8159B64B2ADC804E66CB70F6AD251721C6B8CA2F2168731432C967BC8BAEAD029640E80C2DC27AE03CFC5FC1173965F9CDF8C2931B6EC5D46351D7E79D33AFBE6C58663F3EADA5B2A49DF6CDE1C990786108116511DD9FC673E0559D84A55136C001830FE62C495C90398E9605494E24107C0267BDA129797B7B1ACF861C04F07D6BBA8B111F888611E5631EFF9716C406A7AE8BE2DDE1D873FB571C82088ABD18FE051F6E4AEE9B9094C63FAC38CA68B4EA46F12CD709DFDAC944ED46AF792FDBA2
    -tmp_aes_key = 3826079A7BBD2CC9B9AE0E9D1BEEDA1A663CE630DC446D259DE256A1C953E8FA
    -tmp_aes_iv = 7A6748BA29AAC95EF75BD4588351617832FD34568EF1C4018F04F871FA05D41E
    +
    encrypted_answer = A0352CC087EA1E380820F7C94661883208B6F39D47BADA5DC72B94D722F6F7C4194BD256B0754FBD65E2C2CA6428AB697A3CD2255C3C28967A0B833C1B51C9D573F2DEBCB9AE8EBF03F6C863557D44027F39608B2CA02FC98FEFCD0C1F315495E7ECC8B17A3347D66CFDE0353DE7EB421FE063B0C2E485DC3EF6EB7BAE574B21DDDBF7D273BFD08B0A17CFB9340DD2C9C4B6FFF24E02DE473222D0869ED1A22EC6593F3A6EB655072ACAB454DC1733A8BA64A2FAFCB9679D8F1A43204CBBF359605AFBA77F4F4B8986D8A84B357683380978BB66F7158C5A89ED75B107998E89516DD933DEDE35D2FA4F53DF4929541B4526FB1349381F96A857EEFB9DF26584FF516FD06B2367960A4E386D7DFA067E603041DB1ABD274828BD3D5FB7436DB2B1C25D8105F2108A48AE0BF4196524E683EC10CC3AB8CD58358C02AC41D926FF1ECD4A5F1936986BC97321BD4C88ED7B5F094B1E70B72B5EFC1D86E9824305195235F0E066F2DFA0BBD2488CC88BB57AC7895959CB1AFEBFB036FB9200E844D26031A14ABBF518B0893AFA4C29D7B06C690D5A7FD316CC920817D45E7EFEBFEBB589BA99F4104093296E9999B09EA66A72679ADDBACEC363D150E16DFB8D51C46E19505DC1539732DDD3CFF351BDCEB28AD3793C0DA308D12A313BD7D266BBBA88765E20F339220858439768072F26C4ABECCE48A5F899C526E5266F7A4A4EF2F3B08B5F53AB6B4590F9E0DF8B441005C80CE472E26831F864E0A9CE06C9DFFEC4E6013A26B823A83BA4643D5FDDB6DEEAF75DA30C87ABFE29F471DD827B399C6EC59D98CEEE1FD430196395885FDBF9
    +tmp_aes_key = FD36AB8054D1E2F02F5205DC00729025F859AB708409CE4F32E82FDA951B0D7A
    +tmp_aes_iv = 049A211296D24BE36D7FFA1E3C30904487A544973922E4930CD594630E6358A8

    Yielding:

    -
    answer_with_hash = 3C9D681E6DB06E8B9F3D3CA74BC92D7E67D227D0BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002FDAB5904B04F687AFF2E819845CF3BE57A147004CFFEF1C5DEA2574EB87C7A1462EAF356CBAD7B11BC1AAF4C64924555834B4E0FECB94118F21958824D8E0EB78FD33BA711806508E1EFA3BDB4520DBD4459CA6BAD3A8CD59874AE8295DBD0B6EC31C2A381406FCFBCA4031EDB433CDCF43551BEDAC54CBF8209542C22BC0D564FC8585945869AF496994DEE5E9B1E59C96020713B4B3AE90ED7DC68FD1DB5B81C2411E7C0E70893BC1A5804563D424AE95A453419AFFEB3B8A8AF7C9995041DDBB3117F105397B250C2FF1F565926000CC06E175B9A7078ABFA6383D0771822291D83BC82DCD16E991B4ACF7F9C17814F6715D3517F4E66401863418F16AABB2AF9C641C1005E08D6EEDB1
    -answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474203000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001002FDAB5904B04F687AFF2E819845CF3BE57A147004CFFEF1C5DEA2574EB87C7A1462EAF356CBAD7B11BC1AAF4C64924555834B4E0FECB94118F21958824D8E0EB78FD33BA711806508E1EFA3BDB4520DBD4459CA6BAD3A8CD59874AE8295DBD0B6EC31C2A381406FCFBCA4031EDB433CDCF43551BEDAC54CBF8209542C22BC0D564FC8585945869AF496994DEE5E9B1E59C96020713B4B3AE90ED7DC68FD1DB5B81C2411E7C0E70893BC1A5804563D424AE95A453419AFFEB3B8A8AF7C9995041DDBB3117F105397B250C2FF1F565926000CC06E175B9A7078ABFA6383D0771822291D83BC82DCD16E991B4ACF7F9C17814F6715D3517F4E66401863418F16AABB2AF9C641C1005E08D6EEDB1
    +
    answer_with_hash = 46A914334DFF3DF06D9A1E5330BF60A105E40B07BA0D89B5DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF43973903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010035D6639175B1FF6E0AC40189370B3067AF8D52CEA7087E49E01707B5E6112CB33327267BD526CDCD1E971B0488E8C93510E86049B25F640170B02BDE609E83050E5FAB0654C03837E7832018152B11928E0F2E4C3327DBE2717E123CC5994EA0A6034CED7EAD34D99CA90D8940B2065897EBF617B9B1662E682053CDC75A31FD6D7B27B1B8FE868C8139752A4848A5493DFC71477009E0653D185051A7D6F6C3A59C2A89EC8B9BCDD87CB849893D709261D690E3843565DEB19B76B21FB8A0A28DE3BEA19869F1D73346909D17666F94778077C599761176248536A8BB944F4F73C366BF70A04D13326D227999E146C830A473FC9B1F3525263FE30B7D82C2B7009B9E644AD2ABF1F215707B
    +answer = BA0D89B5DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF43973903000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010035D6639175B1FF6E0AC40189370B3067AF8D52CEA7087E49E01707B5E6112CB33327267BD526CDCD1E971B0488E8C93510E86049B25F640170B02BDE609E83050E5FAB0654C03837E7832018152B11928E0F2E4C3327DBE2717E123CC5994EA0A6034CED7EAD34D99CA90D8940B2065897EBF617B9B1662E682053CDC75A31FD6D7B27B1B8FE868C8139752A4848A5493DFC71477009E0653D185051A7D6F6C3A59C2A89EC8B9BCDD87CB849893D709261D690E3843565DEB19B76B21FB8A0A28DE3BEA19869F1D73346909D17666F94778077C599761176248536A8BB944F4F73C366BF70A04D13326D227999E146C830A473FC9B1F3525263FE30B7D82C2B7009B9E644AD2ABF1F215707B

    Generated payload (excluding transport headers/trailers):

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

    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, 80130871EB2AF9C64Message ID generated as specified here »0198C250009B9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    encrypted_answer 56, 596FE500200073FF0CEBA1A9EF880F885E4 D0E9C1EF93F61A18BD1BB78D7A36D3BF 1B766E28139102C485BA0D47D383C8E6 039DBBD378BAA64DC067F1604396DAA0 4D721E110D2308F495A534DE443006DE 9176B4B8D927248402E16D69FC8F7348 54BAFBF806004E43269CA8C87291D4F8 F436843A0CB3FD631FE4D7F41E8FAC2E 34EF840BDAC03314248A4AF691ADAB7A 0C6BDCCA3D85FD49E49AE6E518AF6DDA 95CF034F90EB1B4250CDF603F58121BC 3C4889E0C6730C89773A8D77C9FC7AF3 05C9F93BD83510FBF1B98ED70849615A D2C9497F9C8A944CB1D3A51AD10144B7 777A4A5ED959FFE03B873D4CF010B361 C62F7B423EEC02CACE0D280A6E341EA5 BDAE28EFBA69D050581056356B7B6F66 D9A9514416578842240BED8633381F0C 4AB006C54B6029E58EAFA36F872EE7C9 5B5DF591C7C2686A3E61489FFB06F910 AC03C5F456B9A3C34A5CCACE676E875C F3E76791C4AD88C31F9D6F43EF4E9EF4 8E0DBC301EF29D2EB38030705E1A0F25 F2007D5412966638DC5114371A63082C 81462C3B700EA5356E28923F5087AF05 1CFD8159B64B2ADC804E66CB70F6AD25 1721C6B8CA2F2168731432C967BC8BAE AD029640E80C2DC27AE03CFC5FC11739 65F9CDF8C2931B6EC5D46351D7E79D33 AFBE6C58663F3EADA5B2A49DF6CDE1C9 90786108116511DD9FC673E0559D84A5 5136C001830FE62C495C90398E960549 4E24107C0267BDA129797B7B1ACF861C 04F07D6BBA8B111F888611E5631EFF97 16C406A7AE8BE2DDE1D873FB571C8208 8ABD18FE051F6E4AEE9B9094C63FAC38 CA68B4EA46F12CD709DFDAC944ED46AF
    792FDBA2
    FE500200A0352CC087EA1E380820F7C9 4661883208B6F39D47BADA5DC72B94D7 22F6F7C4194BD256B0754FBD65E2C2CA 6428AB697A3CD2255C3C28967A0B833C 1B51C9D573F2DEBCB9AE8EBF03F6C863 557D44027F39608B2CA02FC98FEFCD0C 1F315495E7ECC8B17A3347D66CFDE035 3DE7EB421FE063B0C2E485DC3EF6EB7B AE574B21DDDBF7D273BFD08B0A17CFB9 340DD2C9C4B6FFF24E02DE473222D086 9ED1A22EC6593F3A6EB655072ACAB454 DC1733A8BA64A2FAFCB9679D8F1A4320 4CBBF359605AFBA77F4F4B8986D8A84B 357683380978BB66F7158C5A89ED75B1 07998E89516DD933DEDE35D2FA4F53DF 4929541B4526FB1349381F96A857EEFB 9DF26584FF516FD06B2367960A4E386D 7DFA067E603041DB1ABD274828BD3D5F B7436DB2B1C25D8105F2108A48AE0BF4 196524E683EC10CC3AB8CD58358C02AC 41D926FF1ECD4A5F1936986BC97321BD 4C88ED7B5F094B1E70B72B5EFC1D86E9 824305195235F0E066F2DFA0BBD2488C C88BB57AC7895959CB1AFEBFB036FB92 00E844D26031A14ABBF518B0893AFA4C 29D7B06C690D5A7FD316CC920817D45E 7EFEBFEBB589BA99F4104093296E9999 B09EA66A72679ADDBACEC363D150E16D FB8D51C46E19505DC1539732DDD3CFF3 51BDCEB28AD3793C0DA308D12A313BD7 D266BBBA88765E20F339220858439768 072F26C4ABECCE48A5F899C526E5266F 7A4A4EF2F3B08B5F53AB6B4590F9E0DF 8B441005C80CE472E26831F864E0A9CE 06C9DFFEC4E6013A26B823A83BA4643D 5FDDB6DEEAF75DA30C87ABFE29F471DD 827B399C6EC59D98CEEE1FD430196395
    885FDBF9
    See below
    @@ -571,13 +570,13 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474 - + - + @@ -595,13 +594,13 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474 - + - + @@ -610,34 +609,34 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474
    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 = 29F2FD3102D844146B82E7C115C554A80961BC260BCA739BB670787AF0A72A512BA2E47AD58D0C478415251E4D0F7A737C2BF06A364C6E995ED596C88F4685F412B60205ECB9FA3ECA18A5B7B2DBEF3F26614806067E2F5831BB9CFF38278A25BB79A8F081A9E72E92CF74DE524DFBC07B6F5F77DF5F1EFF385E0B943282DF43A220AF62387F662982CCEDB59302EAD733438089FE871856F3C6E9221198094EA76E20868AEC4A7D7C809223CB28627DF3A05961B5148BE043CC64ECA1BFCC427F476E8A6769CDD7F5B774311BC166DB8FEC80E7C2BB9DF3B391D5D441B6BB35F0828BB9A22C9151FC63F1F3C04517C127A0BB98A2850867D7074E8D0C2FC576
    +
    b = F7C5CD46D4A88DED59C1B412D39FEC78BD86A6DC2BF2C5C5D8AF305204158F14B3244D42FFCF2363DC0D25DC6C48A16A3A0E63813D9E87442CA3C2CF84DF848C540531FCDBAD8290A6B25E021EB9AAEEB702F6FB31DC39C48EF615BB0CBBEDE1958D8BF5DCC205CBED3A9DFCD597115163A131DFD4939E68EB2C6F097A5632A3773D5201783A3B6CDE805794F5CBEEFD9FCB8DEAEAD1C5BCADD6366C8A907FABE99A026E59E8521085CE6130123E80B72DFD5EF3D2C0BC880F52DEEF7404638D8053D464036BF7057A77BE75EDA78D3C82221BB131FE6ECB8C43F77DF1D04935F978BA40F3F59385D6D6C2E7782BFFB040AB60F28459EB68A42A904B55E8088C

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

    -
    g_b = 69A19DF1CA7E2F7EB2D1C4FB9BA2856EF2AA19510669FF991757F7A3A10AA176A81CBD993DC7BD794C4E169056601BABFFE5C1A8DC6BCB705BB24BDB5E17280D26DAF0A9A801558CB87A11E30D6E8DD29CC039D014EA819CD0F8148CBA1BDB21331FFCB6063ED8FB66A6E90A02A80B68CDE53CB45D1266E8C19617FDD5AFD824001FD16BF666A1946B54B45C751CDD535B3718C6BE7A2EBAD4B35F5CA61D128B5B10ED4223C08D7294FCE18C8D30B5CFC8D73A80469150F7180F5F76F4FEAA0156EFA7665BB37F87B5F9EEAA654550555C05F91342608BB76F1E394EA6C51CE64589540E8729F9F5AE1B33108E8D35233ABFEE824AA2B940C5F04335CA59E0C4
    +
    g_b = 2545CE89DAD14BDF0F1E2E34F366124474E221B5C2019CF5240612B81798311E9ED33201DE78EA34B59DC0151E4CF820DEEC3850E1B08114B7599A1C99F28A85234ABCF8DC8BE8AB0CD1019EC56AB7BB2E05F07B7656338BE254ABB2F45AD42A86848E602B04A6B9CC9262780D4F87505A8B17191F53E72BDB00AB290B76810EB15C873183D72EC3D2CB411C3F4BDC7944E1CABF5571B152F7FC3CA1DA470977329DC49854BA62A85AE7645FECBD8183B5A4AAD06DFC56D4BA6106F81A45BEF32A9E4F56A213FB2A027B3ACDFDDDE6A6D57E68352C82F7C0D2108FC010725929CB7C88EE737F7B498D86134C7C7F2626F0357067A07813C0D3F2C86876CC1FF1
    7.1) generation of encrypted_data

    Generated payload (excluding transport headers/trailers):

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

    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, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 20, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    g_a 300, 260FE0001002FDAB5904B04F687AFF2E819 845CF3BE57A147004CFFEF1C5DEA2574 EB87C7A1462EAF356CBAD7B11BC1AAF4 C64924555834B4E0FECB94118F219588 24D8E0EB78FD33BA711806508E1EFA3B DB4520DBD4459CA6BAD3A8CD59874AE8 295DBD0B6EC31C2A381406FCFBCA4031 EDB433CDCF43551BEDAC54CBF8209542 C22BC0D564FC8585945869AF496994DE E5E9B1E59C96020713B4B3AE90ED7DC6 8FD1DB5B81C2411E7C0E70893BC1A580 4563D424AE95A453419AFFEB3B8A8AF7 C9995041DDBB3117F105397B250C2FF1 F565926000CC06E175B9A7078ABFA638 3D0771822291D83BC82DCD16E991B4AC F7F9C17814F6715D3517F4E664018634
    18F16AAB
    FE00010035D6639175B1FF6E0AC40189 370B3067AF8D52CEA7087E49E01707B5 E6112CB33327267BD526CDCD1E971B04 88E8C93510E86049B25F640170B02BDE 609E83050E5FAB0654C03837E7832018 152B11928E0F2E4C3327DBE2717E123C C5994EA0A6034CED7EAD34D99CA90D89 40B2065897EBF617B9B1662E682053CD C75A31FD6D7B27B1B8FE868C8139752A 4848A5493DFC71477009E0653D185051 A7D6F6C3A59C2A89EC8B9BCDD87CB849 893D709261D690E3843565DEB19B76B2 1FB8A0A28DE3BEA19869F1D73346909D 17666F94778077C599761176248536A8 BB944F4F73C366BF70A04D13326D2279 99E146C830A473FC9B1F3525263FE30B
    7D82C2B7
    g_a diffie-hellman parameter
    server_time 560, 4B2AF9C64 (1687990194 in decimal)009B9E64 (1688115968 in decimal) Server time
    @@ -659,19 +658,19 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474 - + - + - + @@ -685,47 +684,47 @@ answer = BA0D89B5B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B474

    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 = 54B64366B0BB83C2684938B76AC4923AA545C8F0592E37C5BF99B8DDAE33E6EE394B47420000000000000000FE00010069A19DF1CA7E2F7EB2D1C4FB9BA2856EF2AA19510669FF991757F7A3A10AA176A81CBD993DC7BD794C4E169056601BABFFE5C1A8DC6BCB705BB24BDB5E17280D26DAF0A9A801558CB87A11E30D6E8DD29CC039D014EA819CD0F8148CBA1BDB21331FFCB6063ED8FB66A6E90A02A80B68CDE53CB45D1266E8C19617FDD5AFD824001FD16BF666A1946B54B45C751CDD535B3718C6BE7A2EBAD4B35F5CA61D128B5B10ED4223C08D7294FCE18C8D30B5CFC8D73A80469150F7180F5F76F4FEAA0156EFA7665BB37F87B5F9EEAA654550555C05F91342608BB76F1E394EA6C51CE64589540E8729F9F5AE1B33108E8D35233ABFEE824AA2B940C5F04335CA59E0C4
    -padding = 4670CB59FFB7033A86C62AA9
    -tmp_aes_key = 3826079A7BBD2CC9B9AE0E9D1BEEDA1A663CE630DC446D259DE256A1C953E8FA
    -tmp_aes_iv = 7A6748BA29AAC95EF75BD4588351617832FD34568EF1C4018F04F871FA05D41E
    +
    data = 54B64366DA603B0B6C74D60EC94A04D83AF2027D8C0C719D738B757866BA31F7EF4397390000000000000000FE0001002545CE89DAD14BDF0F1E2E34F366124474E221B5C2019CF5240612B81798311E9ED33201DE78EA34B59DC0151E4CF820DEEC3850E1B08114B7599A1C99F28A85234ABCF8DC8BE8AB0CD1019EC56AB7BB2E05F07B7656338BE254ABB2F45AD42A86848E602B04A6B9CC9262780D4F87505A8B17191F53E72BDB00AB290B76810EB15C873183D72EC3D2CB411C3F4BDC7944E1CABF5571B152F7FC3CA1DA470977329DC49854BA62A85AE7645FECBD8183B5A4AAD06DFC56D4BA6106F81A45BEF32A9E4F56A213FB2A027B3ACDFDDDE6A6D57E68352C82F7C0D2108FC010725929CB7C88EE737F7B498D86134C7C7F2626F0357067A07813C0D3F2C86876CC1FF1
    +padding = BD8A6AC82FFB68885A48E0ED
    +tmp_aes_key = FD36AB8054D1E2F02F5205DC00729025F859AB708409CE4F32E82FDA951B0D7A
    +tmp_aes_iv = 049A211296D24BE36D7FFA1E3C30904487A544973922E4930CD594630E6358A8

    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 = B157BF3596956D48DF20A9E10AB507971128D20530E7E3B6087FB1BA74DBE774DE8C5A1AC9D01F70868ED3681FC694F30CE358FC74B854DB48143196F4555CB22721DB87E83D14286CBFB54F4C18F51C9EB719C5924B4E546D6B073C68BA93198FB7A91FB4538E88F6DA2DCCF3734F7EA0112595DEDD6E69C38A5F70E1507069C26E847FB39EEF4BE96863A898FB521117DA5289CAD8F26F3D912D3314A3D4E54D81202AB36ED3625704730BCB495D3464433CB2CC51D1A355AD788C04084CFF69AEAA9AC6282785192BE1C7C1E4AC14E91358056E1A4BC2B0D5E9840F19F70257AD7975DAC3338C5B393835296E51D4845C07962A58F88EE2E2E67C46B1F44CBCA4624D6BD8CC3BA6B59B635CAFF706893E6368404F0475975F652D4C7C69C4E8FA88A9023BB89895823132B3408C0326A4FE9EE68ADEBC56768F0329C9DB79108F080FCEE326135F10E4F89E4C9EF5
    +
    encrypted_data = E3B5716AC2E86342AD2E8C7B75FD17C713CE5C8559659F8301258D63D9101D1DB99EA9C1909315495C8776FD7885CA40AB860F38C8BD946F90CCEC63F3ED2A5A8F06F4E45BFDD0CC4A626AF74C299623B64E8E384BB7A66C36483EA667CE513FB5C2B9C7C635206E824F6BFC45A259CE0692745EBF3FDE3DEE350903FC0E2FF821DAECDF333B23F77866A444E2AC3B1BC8CC2EA38D4C2C3FF375FF70CFAF76E35BE863D54969CF4A887C8D6223874017B4B509CF3DE096E288512FBEF295D4DE4CC3CA6EAEA779B07100D8CC9E2EF7A6B40575CCC5EC93E32E7F8E4FD7332737F3B179573B4BEC13ABD868CC06A725ECFFC29494FE6AFFD3CEF2DE94681D4A3F19DDE0CF9BB0F13974443EA04D6CE173E0655BAFC847B5D55393BE982E00903B557B61FB38F15A88CADA345BC8B7820BB1C051C0A8B13AE70A5479E87D6BCA8A7AA73C306AF0FACD6760C566014DE790

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

    Payload (de)serialization:

    set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
    nonce 4, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 20, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    g_b 36, 260FE00010069A19DF1CA7E2F7EB2D1C4FB 9BA2856EF2AA19510669FF991757F7A3 A10AA176A81CBD993DC7BD794C4E1690 56601BABFFE5C1A8DC6BCB705BB24BDB 5E17280D26DAF0A9A801558CB87A11E3 0D6E8DD29CC039D014EA819CD0F8148C BA1BDB21331FFCB6063ED8FB66A6E90A 02A80B68CDE53CB45D1266E8C19617FD D5AFD824001FD16BF666A1946B54B45C 751CDD535B3718C6BE7A2EBAD4B35F5C A61D128B5B10ED4223C08D7294FCE18C 8D30B5CFC8D73A80469150F7180F5F76 F4FEAA0156EFA7665BB37F87B5F9EEAA 654550555C05F91342608BB76F1E394E A6C51CE64589540E8729F9F5AE1B3310 8E8D35233ABFEE824AA2B940C5F04335
    CA59E0C4
    FE0001002545CE89DAD14BDF0F1E2E34 F366124474E221B5C2019CF5240612B8 1798311E9ED33201DE78EA34B59DC015 1E4CF820DEEC3850E1B08114B7599A1C 99F28A85234ABCF8DC8BE8AB0CD1019E C56AB7BB2E05F07B7656338BE254ABB2 F45AD42A86848E602B04A6B9CC926278 0D4F87505A8B17191F53E72BDB00AB29 0B76810EB15C873183D72EC3D2CB411C 3F4BDC7944E1CABF5571B152F7FC3CA1 DA470977329DC49854BA62A85AE7645F ECBD8183B5A4AAD06DFC56D4BA6106F8 1A45BEF32A9E4F56A213FB2A027B3ACD FDDDE6A6D57E68352C82F7C0D2108FC0 10725929CB7C88EE737F7B498D86134C 7C7F2626F0357067A07813C0D3F2C868
    76CC1FF1
    Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding
    @@ -747,8 +746,8 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - - + + @@ -765,19 +764,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - + @@ -786,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 = 4B2FB207D87D159C14CFBC094533E4305721FD3F8CF1F4C2E218481DAD5BDE4BD687064C86A2F9B15DDF2EB43F6558C7EF91B99FADF614711AEDC6BBAE02F10B97EC40B81837695E58F11F2FAC48E949AF2DBC35E3A8476FF2C8C1CA85835634BEA918657C9801AD8876E8319C02ADF9209EAF5A3D429560D98816943C3019971B67372E146106CD27FB110A589DA8890F43348AF77143AFFCB08BEBEF89BD14BBFECC6AFE2B028C4BEC26ADC3D6786DABFF738CDAEBFE2D15806977DB496736716CD0B64938F1AEC6911FB56B70CC86BFB458048E970CD28E2F3844B7082493C1D46C0EA0AA798068C4160DA2C2D7562A6160255C6A1D7C3C47B7B8DD1C6D55
    +
    auth_key = 48892B997A14A133B6D5B234A7F9B19DCE70CB192B9238372639DD6230B1BCC8D31BBBCCFA7F00BBEF38303BAE50FFF3DC814333123CE6E5980EF4493A74F38AD6B05B6737E296ADF4C97C69C95C5EC840BC22694F4CBFC14598B28F83B5CD79FE881F6AB9615226DF63078688371B3CDD2F6E97B35D17E6710E29469E1476B596C1DE136F05D585290776B306D6946B1C33374A459ECB0E9BFBC5A43D145A6B37C276E94C840EA0950B0B2523744CD538817DBA33CD6C84175AEA8561EBA117D2589EFB30A304B0F7AF29FF141E6B3F6F9FA5CEFF31DF1166937EA07D850427B6D779BBAB5B062526D435206EA25158EABC659DE3DC5E4ABF0D93B87B35E5E7
    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 60 9B 67 B2 AF 9C 64
    -0010 | 34 00 00 00 34 F7 CB 3B B0 BB 83 C2 68 49 38 B7
    -0020 | 6A C4 92 3A A5 45 C8 F0 59 2E 37 C5 BF 99 B8 DD
    -0030 | AE 33 E6 EE 39 4B 47 42 6A F1 5D D5 EA 4A 58 6A
    -0040 | 27 E0 A1 DC 7E 26 D2 C4
    +
    0000 | 00 00 00 00 00 00 00 00 01 84 8C 9F 00 9B 9E 64
    +0010 | 34 00 00 00 34 F7 CB 3B DA 60 3B 0B 6C 74 D6 0E
    +0020 | C9 4A 04 D8 3A F2 02 7D 8C 0C 71 9D 73 8B 75 78
    +0030 | 66 BA 31 F7 EF 43 97 39 B0 91 C6 77 C6 99 6C 09
    +0040 | FF 59 F2 F9 AB 28 16 78

    Payload (de)serialization:

    dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
    message_id 8, 8BCD60900B2AF9C64Message ID generated as specified here »E8300F00009B9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    encrypted_data 56, 340FE500100B157BF3596956D48DF20A9E1 0AB507971128D20530E7E3B6087FB1BA 74DBE774DE8C5A1AC9D01F70868ED368 1FC694F30CE358FC74B854DB48143196 F4555CB22721DB87E83D14286CBFB54F 4C18F51C9EB719C5924B4E546D6B073C 68BA93198FB7A91FB4538E88F6DA2DCC F3734F7EA0112595DEDD6E69C38A5F70 E1507069C26E847FB39EEF4BE96863A8 98FB521117DA5289CAD8F26F3D912D33 14A3D4E54D81202AB36ED3625704730B CB495D3464433CB2CC51D1A355AD788C 04084CFF69AEAA9AC6282785192BE1C7 C1E4AC14E91358056E1A4BC2B0D5E984 0F19F70257AD7975DAC3338C5B393835 296E51D4845C07962A58F88EE2E2E67C 46B1F44CBCA4624D6BD8CC3BA6B59B63 5CAFF706893E6368404F0475975F652D 4C7C69C4E8FA88A9023BB89895823132 B3408C0326A4FE9EE68ADEBC56768F03 29C9DB79108F080FCEE326135F10E4F8
    9E4C9EF5
    FE500100E3B5716AC2E86342AD2E8C7B 75FD17C713CE5C8559659F8301258D63 D9101D1DB99EA9C1909315495C8776FD 7885CA40AB860F38C8BD946F90CCEC63 F3ED2A5A8F06F4E45BFDD0CC4A626AF7 4C299623B64E8E384BB7A66C36483EA6 67CE513FB5C2B9C7C635206E824F6BFC 45A259CE0692745EBF3FDE3DEE350903 FC0E2FF821DAECDF333B23F77866A444 E2AC3B1BC8CC2EA38D4C2C3FF375FF70 CFAF76E35BE863D54969CF4A887C8D62 23874017B4B509CF3DE096E288512FBE F295D4DE4CC3CA6EAEA779B07100D8CC 9E2EF7A6B40575CCC5EC93E32E7F8E4F D7332737F3B179573B4BEC13ABD868CC 06A725ECFFC29494FE6AFFD3CEF2DE94 681D4A3F19DDE0CF9BB0F13974443EA0 4D6CE173E0655BAFC847B5D55393BE98 2E00903B557B61FB38F15A88CADA345B C8B7820BB1C051C0A8B13AE70A5479E8 7D6BCA8A7AA73C306AF0FACD6760C566
    014DE790
    Encrypted client_DH_inner_data generated previously, serialized as a TL byte string
    @@ -818,8 +817,8 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - - + + @@ -836,19 +835,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - + - + - + @@ -920,8 +919,11 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);< - - + + + diff --git a/data/web/corefork.telegram.org/bots/features.html b/data/web/corefork.telegram.org/bots/features.html index c1ba4d69f3..39535f8c4c 100644 --- a/data/web/corefork.telegram.org/bots/features.html +++ b/data/web/corefork.telegram.org/bots/features.html @@ -69,7 +69,7 @@
  • Payments
  • Web Login
  • HTML5 Games
  • -
  • Stickers
  • +
  • Stickers
  • Language Support
  • @@ -241,7 +241,7 @@ width=44% />
  • Accept Payments via dozens of integrated third-party payment providers.
  • Connect to Telegram using the Web Login functionality.
  • Create gaming bots by integrating HTML5 Games.
  • -
  • Help users create and manage Telegram Stickers.
  • +
  • Help users create and manage Telegram Stickers.
  • Web Apps

    Bots can easily process complex inputs of any kind and dynamic interaction flows via Web Apps. With this unique feature, you can develop any number of flexible, streamlined interfaces in JavaScript.

    @@ -344,7 +344,7 @@ width=44% />
    message_id 8, 801609B67B2AF9C64Message ID generated as specified here »01848C9F009B9E64Message ID generated as specified here » (unixtime() << 32) + (N*4)
    message_length
    nonce 24, 16B0BB83C2684938B76AC4923AA545C8F0DA603B0B6C74D60EC94A04D83AF2027D Value generated by client in Step 1
    server_nonce 40, 16592E37C5BF99B8DDAE33E6EE394B47428C0C719D738B757866BA31F7EF439739 Value received from server in Step 2
    new_nonce_hash1 56, 166AF15DD5EA4A586A27E0A1DC7E26D2C4B091C677C6996C09FF59F2F9AB281678 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.