Ë
    ;ÔSi}  ã                   óÎ   — d Z ddlZddlZddlmZ 	 ddlZddlZddlm	Z	 i a
d„ Zd„ Zd	„ Zd
dœd„ZdD ]  Z eed
¬«       Œ dD ]  Z eed¬«       Œ y# e$ r dZ ed«      ‚w xY w)zL
This module holds several utilities regarding RSA and server fingerprints.
é    N)Úsha1z-Missing module "rsa", please install via pip.é   )ÚTLObjectc                 ób   — t         j                  | | j                  «       dz   dz
  dz  dd¬«      S )z?Return the variable length bytes corresponding to the given inté   é   ÚbigF)Ú	byteorderÚsigned)ÚintÚto_bytesÚ
bit_length)Úintegers    úX/var/www/OnlineNewsSite/project/venv/lib/python3.12/site-packages/telethon/crypto/rsa.pyÚget_byte_arrayr      s>   € ô <‰<ØØ	×	Ñ	Ó	 Ñ	! AÑ	%¨!Ñ+ØØð	 ó ð ó    c                 ó  — t        j                  t        | j                  «      «      }t        j                  t        | j                  «      «      }t        j                  dt        ||z   «      j                  «       dd «      d   S )z—
    Given a RSA key, computes its fingerprint like Telegram does.

    :param key: the Crypto.RSA key.
    :return: its 8-bytes-long fingerprint.
    z<qiøÿÿÿNr   )	r   Úserialize_bytesr   ÚnÚeÚstructÚunpackr   Údigest)Úkeyr   r   s      r   Ú_compute_fingerprintr   %   sd   € ô 	× Ñ ¤°·±Ó!6Ó7€AÜ× Ñ ¤°·±Ó!6Ó7€Aä=‰=˜œt A¨¡E›{×1Ñ1Ó3°B°CÐ8Ó9¸!Ñ<Ð<r   c                ój   — t         j                  j                  | «      }||ft        t	        |«      <   y)zCAdds a new public key to be used when encrypting new data is neededN)ÚrsaÚ	PublicKeyÚ
load_pkcs1Ú_server_keysr   )ÚpubÚoldr   s      r   Úadd_keyr#   2   s,   € ô -‰-×
"Ñ
" 3Ó
'€CØ/2°C¨j„LÔ% cÓ*Ò+r   F)Úuse_oldc                ó€  — t         j                  | ddg«      \  }}|r|r|syt        |«      j                  «       |z   t	        j
                  dt        |«      z
  «      z   }t        j                  |d«      }t        j                  j                  ||j                  |j                  «      }|j                  dd«      }|S )a‚  
    Encrypts the given data known the fingerprint to be used
    in the way Telegram requires us to do so (sha1(data) + data + padding)

    :param fingerprint: the fingerprint of the RSA key.
    :param data: the data to be encrypted.
    :param use_old: whether old keys should be used.
    :return:
        the cipher text, or None if no key matching this fingerprint is found.
    Néë   r	   é   )r    Úgetr   r   ÚosÚurandomÚlenr   Ú
from_bytesr   ÚcoreÚencrypt_intr   r   r   )	ÚfingerprintÚdatar$   r   r"   Ú
to_encryptÚpayloadÚ	encryptedÚblocks	            r   Úencryptr5   9   s    € ô ×Ñ ¨d°D¨\Ó:H€CˆÙ‘S¡Øô d“×"Ñ"Ó$ tÑ+¬b¯j©j¸¼sÀ4»y¹Ó.IÑI€Jô n‰n˜Z¨Ó/€GÜ—‘×$Ñ$ W¨c¯e©e°S·U±UÓ;€Ià×Ñ˜s EÓ*€EØ€Lr   )a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAruw2yP/BCcsJliRoW5eBVBVle9dtjJw+OYED160Wybum9SXtBBLX
riwt4rROd9csv0t0OHCaTmRqBcQ0J8fxhN6/cpR1GWgOZRUAiQxoMnlt0R93LCX/
j1dnVa/gVbCjdSxpbrfY2g2L4frzjJvdl84Kd9ORYjDEAyFnEA7dD556OptgLQQ2
e2iVNq8NZLYTzLp5YpOdO1doK+ttrltggTCy5SrKeLoCPPbOgGsdxJxyz5KKcZnS
Lj16yE5HvJQn0CNpRdENvRUXe6tBP78O39oJ8BTHp9oIjd6XWXAsp2CvK45Ol8wF
XGF710w9lwCGNbmNxNYhtIkdqfsEcwR5JwIDAQAB
-----END RSA PUBLIC KEY-----a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAvfLHfYH2r9R70w8prHblWt/nDkh+XkgpflqQVcnAfSuTtO05lNPs
pQmL8Y2XjVT4t8cT6xAkdgfmmvnvRPOOKPi0OfJXoRVylFzAQG/j83u5K3kRLbae
7fLccVhKZhY46lvsueI1hQdLgNV9n1cQ3TDS2pQOCtovG4eDl9wacrXOJTG2990V
jgnIKNA0UMoP+KF03qzryqIt3oTvZq03DyWdGK+AZjgBLaDKSnC6qD2cFY81UryR
WOab8zKkWAnhw2kFpcqhI0jdV5QaSCExvnsjVaX0Y1N0870931/5Jb9ICe4nweZ9
kSDF/gip3kWLG0o8XQpChDfyvsqB9OLV/wIDAQAB
-----END RSA PUBLIC KEY-----a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAs/ditzm+mPND6xkhzwFIz6J/968CtkcSE/7Z2qAJiXbmZ3UDJPGr
zqTDHkO30R8VeRM/Kz2f4nR05GIFiITl4bEjvpy7xqRDspJcCFIOcyXm8abVDhF+
th6knSU0yLtNKuQVP6voMrnt9MV1X92LGZQLgdHZbPQz0Z5qIpaKhdyA8DEvWWvS
Uwwc+yi1/gGaybwlzZwqXYoPOhwMebzKUk0xW14htcJrRrq+PXXQbRzTMynseCoP
Ioke0dtCodbA3qQxQovE16q9zz4Otv2k4j63cz53J+mhkVWAeWxVGI0lltJmWtEY
K6er8VqqWot3nqmWMXogrgRLggv/NbbooQIDAQAB
-----END RSA PUBLIC KEY-----a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAvmpxVY7ld/8DAjz6F6q05shjg8/4p6047bn6/m8yPy1RBsvIyvuD
uGnP/RzPEhzXQ9UJ5Ynmh2XJZgHoE9xbnfxL5BXHplJhMtADXKM9bWB11PU1Eioc
3+AXBB8QiNFBn2XI5UkO5hPhbb9mJpjA9Uhw8EdfqJP8QetVsI/xrCEbwEXe0xvi
fRLJbY08/Gp66KpQvy7g8w7VB8wlgePexW3pT13Ap6vuC+mQuJPyiHvSxjEKHgqe
Pji9NP3tJUFQjcECqcm0yV7/2d0t/pbCm+ZH1sadZspQCEPPrtbkQBlvHb4OLiIW
PGHKSMeRFvp3IWcmdJqXahxLCUS1Eh6MAQIDAQAB
-----END RSA PUBLIC KEY-----)r"   )a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAwVACPi9w23mF3tBkdZz+zwrzKOaaQdr01vAbU4E1pvkfj4sqDsm6
lyDONS789sVoD/xCS9Y0hkkC3gtL1tSfTlgCMOOul9lcixlEKzwKENj1Yz/s7daS
an9tqw3bfUV/nqgbhGX81v/+7RFAEd+RwFnK7a+XYl9sluzHRyVVaTTveB2GazTw
Efzk2DWgkBluml8OREmvfraX3bkHZJTKX4EQSjBbbdJ2ZXIsRrYOXfaA+xayEGB+
8hdlLmAjbCVfaigxX0CDqWeR1yFL9kwd9P0NsZRPsmoqVwMbMu7mStFai6aIhc3n
Slv8kg9qv1m6XHVQY3PnEw+QQtqSIXklHwIDAQAB
-----END RSA PUBLIC KEY-----a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAxq7aeLAqJR20tkQQMfRn+ocfrtMlJsQ2Uksfs7Xcoo77jAid0bRt
ksiVmT2HEIJUlRxfABoPBV8wY9zRTUMaMA654pUX41mhyVN+XoerGxFvrs9dF1Ru
vCHbI02dM2ppPvyytvvMoefRoL5BTcpAihFgm5xCaakgsJ/tH5oVl74CdhQw8J5L
xI/K++KJBUyZ26Uba1632cOiq05JBUW0Z2vWIOk4BLysk7+U9z+SxynKiZR3/xdi
XvFKk01R3BHV+GUKM2RYazpS/P8v7eyKhAbKxOdRcFpHLlVwfjyM1VlDQrEZxsMp
NTLYXb6Sce1Uov0YtNx5wEowlREH1WOTlwIDAQAB
-----END RSA PUBLIC KEY-----a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAsQZnSWVZNfClk29RcDTJQ76n8zZaiTGuUsi8sUhW8AS4PSbPKDm+
DyJgdHDWdIF3HBzl7DHeFrILuqTs0vfS7Pa2NW8nUBwiaYQmPtwEa4n7bTmBVGsB
1700/tz8wQWOLUlL2nMv+BPlDhxq4kmJCyJfgrIrHlX8sGPcPA4Y6Rwo0MSqYn3s
g1Pu5gOKlaT9HKmE6wn5Sut6IiBjWozrRQ6n5h2RXNtO7O2qCDqjgB2vBxhV7B+z
hRbLbCmW0tYMDsvPpX5M8fsO05svN+lKtCAuz1leFns8piZpptpSCFn7bWxiA9/f
x5x17D7pfah3Sy2pA+NDXyzSlGcKdaUmwQIDAQAB
-----END RSA PUBLIC KEY-----a©  -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAwqjFW0pi4reKGbkc9pK83Eunwj/k0G8ZTioMMPbZmW99GivMibwa
xDM9RDWabEMyUtGoQC2ZcDeLWRK3W8jMP6dnEKAlvLkDLfC4fXYHzFO5KHEqF06i
qAqBdmI1iBGdQv/OQCBcbXIWCGDY2AsiqLhlGQfPOI7/vvKc188rTriocgUtoTUc
/n/sIUzkgwTqRyvWYynWARWzQg0I9olLBBC2q5RQJJlnYXZwyTL3y9tdb7zOHkks
WV9IMQmZmyZh/N7sMbGWQpt4NMchGpPGeJ2e5gHBjDnlIf2p1yZOYeUYrdbwcS0t
UiggS4UeE8TzIuXFQxw7fzEIlmhIaq3FnwIDAQAB
-----END RSA PUBLIC KEY-----T)Ú__doc__r)   r   Úhashlibr   r   Úrsa.coreÚImportErrorÚtlr   r    r   r   r#   r5   r!   © r   r   ú<module>r<      sª   ðñó 
Û Ý ðGÛÛõ
 ð €òò 
=ò9ð +0ô ð<%ò &€CñL ˆCUÖðM&ðR$ò %€CñJ ˆCTÖñK%øðm ò GØ
€CÙ
ÐEÓ
FÐFðGús   ’A ÁA$