mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-10 19:46:36 +03:00
75a648f438
Some fixes include, in more detail: - Using little over big endianess in some parts - Flagging all the constructor numbers as unsigned - Fixed bugs with factorizer - Implemented TLSharp's RSA
30 lines
1.0 KiB
Python
Executable File
30 lines
1.0 KiB
Python
Executable File
# This file is based on TLSharp
|
|
# https://github.com/sochix/TLSharp/blob/master/TLSharp.Core/MTProto/Crypto/AuthKey.cs
|
|
import utils.helpers as utils
|
|
from utils.binary_writer import BinaryWriter
|
|
from utils.binary_reader import BinaryReader
|
|
|
|
|
|
class AuthKey:
|
|
def __init__(self, gab=None, data=None):
|
|
if gab:
|
|
self.key = utils.get_byte_array(gab, signed=False)
|
|
elif data:
|
|
self.key = data
|
|
else:
|
|
raise AssertionError('Either a gab integer or data bytes array must be provided')
|
|
|
|
with BinaryReader(utils.sha1(self.key)) as reader:
|
|
self.aux_hash = reader.read_long(signed=False)
|
|
reader.read(4)
|
|
self.key_id = reader.read_long(signed=False)
|
|
|
|
def calc_new_nonce_hash(self, new_nonce, number):
|
|
with BinaryWriter() as writer:
|
|
writer.write(new_nonce)
|
|
writer.write_byte(number)
|
|
writer.write_long(self.aux_hash, signed=False)
|
|
|
|
new_nonce_hash = utils.sha1(writer.get_bytes())[4:20]
|
|
return new_nonce_hash
|