mtproto v57.1.0-alpha MTProto.Math

Summary

Functions

Just number & 1

BXOR for binaries, for making new server_salt in Crypto.make_server_salt/2

Just number bor 1

Checks generated message_id with the current one

Decomposes pq into prime factors such that p < q

Computes random 2048-bit number a (using a sufficient amount of entropy)

auth_key := pow(g_a, b) mod dh_prime;

Computes random 2048-bit number b (using a sufficient amount of entropy)

g_b := pow(g, b) mod dh_prime;

key := pow(g_b, a) mod dh_prime; for client A key := pow(g_a, b) mod dh_prime; for client B

Creates more complex message_id value, to use in TL protocol

Creates simple message_id value, to use in DH key exchange

Functions

band1(number)

Just number & 1

binary_bxor(bin1, bin2)

BXOR for binaries, for making new server_salt in Crypto.make_server_salt/2

bor1(number)

Just number bor 1

check_message_id(current, generated)

Checks generated message_id with the current one

factorize(n)

Decomposes pq into prime factors such that p < q

https://core.telegram.org/mtproto/auth_key#proof-of-work (3)

make_a()

Computes random 2048-bit number a (using a sufficient amount of entropy)

https://core.telegram.org/api/end-to-end#sending-a-request

make_auth_key(g_a, b, dh_prime)

auth_key := pow(g_a, b) mod dh_prime;

https://core.telegram.org/mtproto/auth_key#presenting-proof-of-work-server-authentication (7)

make_b()

Computes random 2048-bit number b (using a sufficient amount of entropy)

https://core.telegram.org/mtproto/auth_key#presenting-proof-of-work-server-authentication (6)

make_g_b(g, b, dh_prime)

g_b := pow(g, b) mod dh_prime;

https://core.telegram.org/mtproto/auth_key#presenting-proof-of-work-server-authentication (6)

make_key(g_a_or_b, b_or_a, dh_prime)

key := pow(g_b, a) mod dh_prime; for client A key := pow(g_a, b) mod dh_prime; for client B

https://core.telegram.org/api/end-to-end#accepting-a-request

make_message_id(offset \\ 0)

Creates more complex message_id value, to use in TL protocol

make_message_id_time()

Creates simple message_id value, to use in DH key exchange