HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/pymysql/__pycache__/_auth.cpython-37.pyc
B

�P�e��@s�dZddlmZy0ddlmZddlmZmZddlm	Z	dZ
Wnek
rXdZ
YnXdd	lm
Z
dd
lZdZdZe
ejd�Zd
d�Zdd�Zdadd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd
S)#z
Implements auth methods
�)�OperationalError�)�default_backend)�
serialization�hashes)�paddingTF)�partialN��sha1cCsT|sdSt|���}t|���}t�}|�|dt��|�|�|��}t||�S)z'Scramble used for mysql_native_password�N)�sha1_new�digest�update�SCRAMBLE_LENGTH�	_my_crypt)�password�messageZstage1Zstage2�s�result�r�>/opt/alt/python37/lib/python3.7/site-packages/pymysql/_auth.py�scramble_native_passwords
rcCs:t|�}x(tt|��D]}||||N<qWt|�S)N)�	bytearray�range�len�bytes)Zmessage1Zmessage2r�irrrr+srcCs6yddlm}|aWntk
r0td��YnXdS)Nr)�bindingsz='pynacl' package is required for ed25519_password auth method)Znaclr�_nacl_bindings�ImportError�RuntimeError)rrrr�
_init_nacl:sr!cCsPt|�}tt|dd@g��}tt|dd@dBg��}|t|dd��|S)Nr����@r)rr)Zs32�baZba0Zba31rrr�
_scalar_clampFsr'c
Cs�ts
t�t�|���}t|dd��}t�|dd�|���}t�|�}t�|�}t�|�}t�|||���}t�|�}t�||�}t�	||�}	||	S)znSign a random scramble with elliptic curve Ed25519.

    Secret and public key are derived from password.
    N� )
rr!�hashlib�sha512r
r'Z!crypto_core_ed25519_scalar_reduceZ&crypto_scalarmult_ed25519_base_noclampZcrypto_core_ed25519_scalar_mulZcrypto_core_ed25519_scalar_add)
rZscramble�hr�r�R�A�k�ks�Srrr�ed25519_passwordMs



r2cCs|�|�|��}|��|S)N)Zwrite_packet�_read_packet�check_error)�connZ	send_data�pktrrr�
_roundtripvs
r7cCsR|dt�}t|�}t|�}x,tt|��D]}|||||N<q*Wt|�S)N)rrrrr)r�saltZpassword_bytesZsalt_lenrrrr�
_xor_password}sr9cCsPtstd��t|d|�}t�|t��}|�|tjtj	t
��d�t
��dd��S)zhEncrypt password with salt and public_key.

    Used for sha256_password and caching_sha2_password.
    z\'cryptography' package is required for sha256_password or caching_sha2_password auth methods�)�	algorithmN)Zmgfr;�label)�_have_cryptographyr r9rZload_pem_public_keyrZencryptrZOAEPZMGF1r�SHA1)rr8Z
public_keyrZrsa_keyrrr�sha2_rsa_encrypt�sr?cCs�|jr&trtd�|jd}t||�S|��rZ|��|_|jsZ|jrZtrPtd�t|d�}|�	�r�|j
dd�|_tr�td|j�d��|jr�|js�td��t
|j|j|j�}nd	}t||�S)
Nzsha256: Sending plain passwordr:z$sha256: Requesting server public key�rzReceived public key:
�asciiz$Couldn't receive server's public keyr)�_secure�DEBUG�printrr7�is_auth_switch_request�read_allr8�server_public_key�is_extra_auth_data�_data�decoderr?)r5r6�datarrr�sha256_password_auth�s*



rLcCsp|sdSt�|���}t�|���}t�||���}t|�}x(tt|��D]}||||N<qLWt|�S)z�Scramble algorithm used in cached_sha2_password fast path.

    XOR(SHA256(password), SHA256(SHA256(SHA256(password)), nonce))
    r)r)�sha256r
rrrr)r�nonce�p1�p2Zp3�resrrrr�scramble_caching_sha2�srRcCsX|jst|d�S|��rFtr$td�|��|_t|j|j�}t||�}|��sdt	d|j
dd���|�d�|��}|dkr�tr�td�|�
�}|��|S|dkr�t	d|��tr�td	�|jr�tr�td
�t||jd�S|j�s8t|d�}|���st	d
|j
dd���|j
dd�|_t�r8t|j�d��t|j|j|j�}t||�}dS)Nrzcaching sha2: Trying fast pathz.caching sha2: Unknown packet for fast auth: %sr�z%caching sha2: succeeded by fast path.�z.caching sha2: Unknown result for fast auth: %sz!caching sha2: Trying full auth...z:caching sha2: Sending plain password via secure connectionr:�z/caching sha2: Unknown packet for public key: %srA)rr7rErCrDrFr8rRrHrrI�advanceZ
read_uint8r3r4rBrGrJr?)r5r6Z	scrambled�nrKrrr�caching_sha2_password_auth�sJ





rX)�__doc__�errrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricrr=r�	functoolsrr)rCr�newrrrrr!r'r2r7r9r?rLrRrXrrrr�<module>s2
)