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: //usr/lib/python3.6/site-packages/pymysql/__pycache__/_auth.cpython-36.pyc
3

2�Y_\%�@s:dZddlmZddlmZddlmZmZy0ddlm	Z	ddl
mZmZddl
mZd	ZWnek
rtd
ZYnXddlmZddlZddlZddlZddlZd
Zd
Zeejd�Zdd�Zdd�ZdZGdd�de�Zdd�Z dd�Z!d
a"dd�Z#dd�Z$dd�Z%d d!�Z&d"d#�Z'd$d%�Z(d&d'�Z)d(d)�Z*d*d+�Z+dS),z
Implements auth methods
�)�PY2)�OperationalError)�byte2int�int2byte�)�default_backend)�
serialization�hashes)�paddingTF)�partialN�Zsha1cCsT|sdSt|�j�}t|�j�}t�}|j|dt��|j|�|j�}t||�S)z'Scramble used for mysql_native_password�N)�sha1_new�digest�update�SCRAMBLE_LENGTH�	_my_crypt)�password�messageZstage1Zstage2�s�result�r�/usr/lib/python3.6/_auth.py�scramble_native_password!s
rcCsFt|�}trt|�}x(tt|��D]}||||N<q"Wt|�S)N)�	bytearrayr�range�len�bytes)Zmessage1Zmessage2r�irrrr/sr�c@seZdZdd�Zdd�ZdS)�RandStruct_323cCs"d|_||j|_||j|_dS)Ni���?)�	max_value�seed1�seed2)�selfr"r#rrr�__init__BszRandStruct_323.__init__cCsD|jd|j|j|_|j|jd|j|_t|j�t|j�S)N��!)r"r#r!�float)r$rrr�my_rndGszRandStruct_323.my_rndN)�__name__�
__module__�__qualname__r%r)rrrrr @sr cCs�tjd�t|�}t|dt��}tjd|�}tjd|�}t|d|dA|d|dA�}tj�}x8t	t
tt|���D]"}|jt
t|j�d�d��qxWt
t|j�d��}	|j�}
tj�}x&|
D]}|jt
t|�t|	�A��q�W|j�S)zScramble for old_passwordz�old password (for MySQL <4.1) is used.  Upgrade your password with newer auth method.
old password support will be removed in future PyMySQL versionNz>LLrr��@)�warnings�warn�_hash_password_323�SCRAMBLE_LENGTH_323�struct�unpackr �io�BytesIOr�minr�writer�intr)�getvaluer)rrZ	hash_passZhash_messageZhash_pass_nZhash_message_nZrand_stZoutbuf�_Zextra�out�crrr�scramble_old_passwordMs 
 "
r>cCs�d}d}d}xVdd�|D�D]D}||d@|||d>d@N}||d>|Ad@}||d@}qW|d
@}|d@}tjd||�S)Ni5W0P�iqV4cSsg|]}|dkrt|��qS)� �	� �	)r@rArBrC)r)�.0�xrrr�
<listcomp>jsz&_hash_password_323.<locals>.<listcomp>�?rl��rr-z>LLli���li���)r3�pack)rZnr�addZnr2r=Zr1Zr2rrrr1ds r1cCs6yddlm}|aWntk
r0td��YnXdS)Nr)�bindingsz='pynacl' package is required for ed25519_password auth method)ZnaclrJ�_nacl_bindings�ImportError�RuntimeError)rJrrr�
_init_naclzs
rNcCsPt|�}tt|dd@g��}tt|dd@dBg��}|t|dd��|S)Nr�r-�r.r)rr)Zs32ZbaZba0Zba31rrr�
_scalar_clamp�srQc
Cs�ts
t�tj|�j�}t|dd��}tj|dd�|�j�}tj|�}tj|�}tj|�}tj|||�j�}tj|�}tj||�}tj	||�}	||	S)znSign a random scramble with elliptic curve Ed25519.

    Secret and public key are derived from password.
    NrB)
rKrN�hashlibZsha512rrQZ!crypto_core_ed25519_scalar_reduceZ&crypto_scalarmult_ed25519_base_noclampZcrypto_core_ed25519_scalar_mulZcrypto_core_ed25519_scalar_add)
rZscramble�hr�r�R�A�kZks�Srrr�ed25519_password�s



rYcCs|j|�|j�}|j�|S)N)Zwrite_packet�_read_packet�check_error)�connZ	send_data�pktrrr�
_roundtrip�s
r^cCsZ|dt�}t|�}t|�}t|�}x,tt|��D]}|||||N<q2Wt|�S)N)rrrrr)r�saltZpassword_bytesZsalt_lenrrrr�
_xor_password�sr`cCsPtstd��t|d|�}tj|t��}|j|tjtj	t
j�d�t
j�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)ZmgfrbZlabel)�_have_cryptographyrMr`rZload_pem_public_keyrZencryptr
ZOAEPZMGF1r	ZSHA1)rr_Z
public_keyrZrsa_keyrrr�sha2_rsa_encrypt�srdcCs�|jr&trtd�|jd}t||�S|j�r\|j�|_|jr\|jr\trRtd�t|d�}|j	�r�|j
dd�|_tr�td|jjd��|jr�|js�td��t
|j|j|j�}nd	}t||�S)
Nzsha256: Sending plain passwordraz$sha256: Requesting server public key�rzReceived public key:
�asciiz$Couldn't receive server's public keyr
)�_secure�DEBUG�printrr^�is_auth_switch_request�read_allr_�server_public_key�is_extra_auth_data�_data�decoderrd)r\r]�datarrr�sha256_password_auth�s*



rqcCs||sdStj|�j�}tj|�j�}tj||�j�}t|�}trJt|�}x(tt|��D]}||||N<qXWt|�S)z�Scramble algorithm used in cached_sha2_password fast path.

    XOR(SHA256(password), SHA256(SHA256(SHA256(password)), nonce))
    r
)rRZsha256rrrrrr)rZnonceZp1Zp2Zp3�resrrrr�scramble_caching_sha2�srscCsX|jst|d�S|j�rFtr$td�|j�|_t|j|j�}t||�}|j�sdt	d|j
dd���|jd�|j�}|dkr�tr�td�|j
�}|j�|S|dkr�t	d|��tr�td	�|jr�tr�td
�t||jd�S|j�s8t|d�}|j��st	d
|j
dd���|j
dd�|_t�r8t|jjd��t|j|j|j�}t||�}dS)Nr
zcaching sha2: Trying fast pathz.caching sha2: Unknown packet for fast auth: %srr&z%caching sha2: succeeded by fast path.�z.caching sha2: Unknwon result for fast auth: %sz!caching sha2: Trying full auth...z:caching sha2: Sending plain password via secure connectionra�z/caching sha2: Unknown packet for public key: %srf)rr^rjrhrirkr_rsrmrrnZadvanceZ
read_uint8rZr[rgrlrord)r\r]Z	scrambled�nrprrr�caching_sha2_password_authsJ





rw),�__doc__Z_compatr�errr�utilrrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrr	Z)cryptography.hazmat.primitives.asymmetricr
rcrL�	functoolsrrRr5r3r/rhr�newrrrr2�objectr r>r1rKrNrQrYr^r`rdrqrsrwrrrr�<module>sD

	)