bgdZddlmZ ddlmZddlmZmZddlm Z dZ n #e $rdZ YnwxYwdd l m Z dd lZdZd Ze ejd Zd ZdZdadZdZdZdZdZdZdZdZdZd S)z Implements auth methods )OperationalError)default_backend) serializationhashes)paddingTF)partialNsha1c`|sdSt|}t|}t}||dt|||}t ||S)z'Scramble used for mysql_native_passwordN)sha1_newdigestupdateSCRAMBLE_LENGTH _my_crypt)passwordmessagestage1stage2sresults D/opt/cloudlinux/venv/lib64/python3.11/site-packages/pymysql/_auth.pyscramble_native_passwordrs s h   & & ( (F f   $ $ & &F AHHW%o% &'''HHV XXZZF VV $ $$r ct|}tt|D]}||xx||zcc<t|SN) bytearrayrangelenbytes)message1message2ris rrr+sT x F 3v;;  !!q Xa[ ==r cR ddlm}|adS#t$rt dwxYw)Nrbindingsz='pynacl' package is required for ed25519_password auth method)naclr&_nacl_bindings ImportError RuntimeErrorr%s r _init_naclr+:sR !!!!!!!     K    s &ct|}tt|ddzg}tt|ddzdzg}|t|ddz|zS)Nr@r)rr )s32baba0ba31s r _scalar_clampr5Fsq 3B  2a53;-(( ) )C RVc\R/011 2 2D s1R4y!! !D ((r ctsttj|}t |dd}tj|dd|z}t|}t|}t|}tj||z|z}t|}t||}t ||} || zS)znSign a random scramble with elliptic curve Ed25519. Secret and public key are derived from password. N ) r(r+hashlibsha512rr5!crypto_core_ed25519_scalar_reduce&crypto_scalarmult_ed25519_base_noclampcrypto_core_ed25519_scalar_mulcrypto_core_ed25519_scalar_add) rscramblehrrRAkksSs red25519_passwordrFMs    x  ''))A afA qv())0022A 88;;A==a@@A ==a@@A q1ux'((//11A 88;;A  6 6q! < <===T5))C T!$122  T *D,B,I,I',R,R S S S }% K"#IJJ J ty$:PQQ dD ! !!r c|sdStj|}tj|}tj||z}t|}t t |D]}||xx||zcc<t |S)zScramble algorithm used in cached_sha2_password fast path. XOR(SHA256(password), SHA256(SHA256(SHA256(password)), nonce)) r )r8sha256rrrrr )rnoncep1p2p3resr#s rscramble_caching_sha2rws s  ! ! ( ( * *B    " " $ $B U # # * * , ,B B--C 3r77^^ A"Q% ::r c|jst|dS|rYtrt d||_t|j|j}t||}|std|j ddz| d| }|dkr@trt d| }||S|dkrtd|ztrt d |jr.trt d t||jd zS|jst|d }|std |j ddz|j dd|_tr't |jdt%|j|j|j}t||}dS)Nr zcaching sha2: Trying fast pathz.caching sha2: Unknown packet for fast auth: %srz%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 connectionrUz/caching sha2: Unknown packet for public key: %srd)rrNrhrfrgrirPrwrkrrladvance read_uint8rIrJrerjrmra)rKrM scramblednrns rcaching_sha2_password_authrs> =%$$$$ !!##*  4 2 3 3 3LLNN )$-CC y))  ! ! # #  rs"!!!!!<<<<<<DDDDDDDDAAAAAA  77; ' ' % % %    )))###R ! ! !,""">(9!9!9!9!9!s !++