§
    ¢”jÖ  ã                   óä   — d Z ddlmZ 	 ddlmZ ddlmZmZ ddlm	Z	 dZ
n# e$ r dZ
Y nw xY wdd	lmZ dd
lZdZdZ eej        d¦  «        Zd„ Zd„ Zdad„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd
S )z
Implements auth methods
é   )ÚOperationalErroré    )Údefault_backend)ÚserializationÚhashes)ÚpaddingTF)ÚpartialNé   Úsha1c                 ó`  — | sdS t          | ¦  «                             ¦   «         }t          |¦  «                             ¦   «         }t          ¦   «         }|                     |dt          …         ¦  «         |                     |¦  «         |                     ¦   «         }t	          ||¦  «        S )z'Scramble used for mysql_native_passwordó    N)Úsha1_newÚdigestÚupdateÚSCRAMBLE_LENGTHÚ	_my_crypt)ÚpasswordÚmessageÚstage1Ústage2ÚsÚresults         ú\/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pymysql/_auth.pyÚscramble_native_passwordr      s–   € àð Øˆså�hÑÔ×&Ò&Ñ(Ô(€FÝ�fÑÔ×$Ò$Ñ&Ô&€FÝ‰
Œ
€AØ‡H‚HˆWÐ%•oÐ%Ô&Ñ'Ô'Ð'Ø‡H‚HˆVÑÔÐØ�XŠX‰ZŒZ€FÝ�V˜VÑ$Ô$Ð$r   c                 ó¨   — t          | ¦  «        }t          t          |¦  «        ¦  «        D ]}||xx         ||         z  cc<   Œt          |¦  «        S ©N)Ú	bytearrayÚrangeÚlenÚbytes)Úmessage1Úmessage2r   Úis       r   r   r   ,   sT   € Ý�xÑ Ô €Få•3�v‘;”;ÑÔð !ð !ˆØˆqˆ	ˆ	Œ	�X˜a”[Ñ ˆ	ˆ	‰	ˆ	å�‰=Œ=Ðr   c                  óR   — 	 ddl m}  | ad S # t          $ r t	          d¦  «        ‚w xY w)Nr   ©Úbindingsz='pynacl' package is required for ed25519_password auth method)Únaclr&   Ú_nacl_bindingsÚImportErrorÚRuntimeErrorr%   s    r   Ú
_init_naclr+   ;   sR   € ð
Ø!Ð!Ð!Ð!Ð!Ð!à!ˆˆˆøÝð 
ð 
ð 
ÝØKñ
ô 
ð 	
ð
øøøs   ‚ Œ&c                 óø   — t          | ¦  «        }t          t          |d         dz  g¦  «        ¦  «        }t          t          |d         dz  dz  g¦  «        ¦  «        }|t          | dd…         ¦  «        z   |z   S )Nr   éø   é   é   é@   r   )r   r    )Ús32ÚbaÚba0Úba31s       r   Ú_scalar_clampr5   G   sq   € Ý	�3‰Œ€BÝ
•	˜2˜aœ5 3™;˜-Ñ(Ô(Ñ
)Ô
)€CÝ•˜R œV c™\¨RÑ/Ð0Ñ1Ô1Ñ2Ô2€DØ•�s˜1˜R˜4”yÑ!Ô!Ñ! DÑ(Ð(r   c                 ó¦  — t           st          ¦   «          t          j        | ¦  «                             ¦   «         }t          |dd…         ¦  «        }t          j        |dd…         |z   ¦  «                             ¦   «         }t                                |¦  «        }t                                |¦  «        }t                                |¦  «        }t          j        ||z   |z   ¦  «                             ¦   «         }t                                |¦  «        }t                                ||¦  «        }t            	                    ||¦  «        }	||	z   S )znSign a random scramble with elliptic curve Ed25519.

    Secret and public key are derived from password.
    Né    )
r(   r+   ÚhashlibÚsha512r   r5   Ú!crypto_core_ed25519_scalar_reduceÚ&crypto_scalarmult_ed25519_base_noclampÚcrypto_core_ed25519_scalar_mulÚcrypto_core_ed25519_scalar_add)
r   ÚscrambleÚhr   ÚrÚRÚAÚkÚksÚSs
             r   Úed25519_passwordrF   N   s   € õ ð Ý‰Œˆõ 	Œ�xÑ Ô ×'Ò'Ñ)Ô)€Aõ 	�a˜˜˜”fÑÔ€Aõ 	Œ�q˜˜˜”v Ñ(Ñ)Ô)×0Ò0Ñ2Ô2€Aõ 	×8Ò8¸Ñ;Ô;€AÝ×=Ò=¸aÑ@Ô@€Aõ 	×=Ò=¸aÑ@Ô@€Aõ 	Œ�q˜1‘u˜xÑ'Ñ(Ô(×/Ò/Ñ1Ô1€Aõ 	×8Ò8¸Ñ;Ô;€AÝ	×	6Ò	6°q¸!Ñ	<Ô	<€BÝ×5Ò5°b¸!Ñ<Ô<€Að ˆq‰5€Lr   c                 ó€   — |                       |¦  «         |                      ¦   «         }|                     ¦   «          |S r   )Úwrite_packetÚ_read_packetÚcheck_error)ÚconnÚ	send_dataÚpkts      r   Ú
_roundtriprN   w   s<   € Ø×Ò�iÑ Ô Ð Ø
×
Ò
Ñ
Ô
€CØ‡O‚OÑÔÐØ€Jr   c                 óê   — |d t           …         }t          | ¦  «        }t          |¦  «        }t          t          |¦  «        ¦  «        D ]}||xx         |||z           z  cc<   Œt	          |¦  «        S r   )r   r   r   r   r    )r   ÚsaltÚpassword_bytesÚsalt_lenr#   s        r   Ú_xor_passwordrS   ~   s�   € ð Ð •Ð Ô!€DÝ˜xÑ(Ô(€Nå�4‰yŒy€HÝ•3�~Ñ&Ô&Ñ'Ô'ð 0ð 0ˆØ�qÐÐÔ˜T ! h¡,Ô/Ñ/ÐÐÑÐÝ�Ñ Ô Ð r   c           	      óV  — t           st          d¦  «        ‚t          | dz   |¦  «        }t          j        |t          ¦   «         ¦  «        }|                     |t          j        t          j	        t          j        ¦   «         ¬¦  «        t          j        ¦   «         d¬¦  «        ¦  «        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)ÚmgfrV   Úlabel)Ú_have_cryptographyr*   rS   r   Úload_pem_public_keyr   Úencryptr   ÚOAEPÚMGF1r   ÚSHA1)r   rP   Ú
public_keyr   Úrsa_keys        r   Úsha2_rsa_encryptra   Š   s    € õ
 ð 
Ýð4ñ
ô 
ð 	
õ ˜H uÑ,¨dÑ3Ô3€GÝÔ/°
½OÑ<MÔ<MÑNÔN€GØ�?Š?ØÝŒÝ”¥v¤{¡}¤}Ð5Ñ5Ô5Ý”k‘m”mØð	
ñ 	
ô 	
ñô ð r   c                 óÜ  — | j         r0t          rt          d¦  «         | j        dz   }t	          | |¦  «        S |                     ¦   «         r{|                     ¦   «         | _        | j                             d¦  «        r| j        d d…         | _        | j	        s-| j        r&t          rt          d¦  «         t	          | d¦  «        }| 
                    ¦   «         rC|j        dd …         | _	        t          r(t          d| j	                             d¦  «        ¦  «         | j        r7| j	        st          d	¦  «        ‚t          | j        | j        | j	        ¦  «        }nd
}t	          | |¦  «        S )Nzsha256: Sending plain passwordrU   éÿÿÿÿz$sha256: Requesting server public keyó   r   zReceived public key:
Úasciiz$Couldn't receive server's public keyr   )Ú_secureÚDEBUGÚprintr   rN   Úis_auth_switch_requestÚread_allrP   ÚendswithÚserver_public_keyÚis_extra_auth_dataÚ_dataÚdecoder   ra   )rK   rM   Údatas      r   Úsha256_password_authrq       sk  € Ø„|ð &Ýð 	4ÝÐ2Ñ3Ô3Ð3ØŒ}˜uÑ$ˆÝ˜$ Ñ%Ô%Ð%à
×!Ò!Ñ#Ô#ð *Ø—L’L‘N”NˆŒ	ØŒ9×Ò˜eÑ$Ô$ð 	'Øœ	 # 2 #œˆDŒIØÔ%ð 	*¨$¬-ð 	*åð >ÝÐ<Ñ=Ô=Ð=Ý˜T 5Ñ)Ô)ˆCà
×ÒÑÔð TØ!$¤¨1¨2¨2¤ˆÔÝð 	TÝÐ*¨DÔ,B×,IÒ,IÈ'Ñ,RÔ,RÑSÔSÐSà„}ð ØÔ%ð 	KÝ"Ð#IÑJÔJÐJå ¤¨t¬y¸$Ô:PÑQÔQˆˆàˆå�d˜DÑ!Ô!Ð!r   c                 óš  — | sdS t          j        | ¦  «                             ¦   «         }t          j        |¦  «                             ¦   «         }t          j        ||z   ¦  «                             ¦   «         }t          |¦  «        }t	          t          |¦  «        ¦  «        D ]}||xx         ||         z  cc<   Œt          |¦  «        S )zƒScramble algorithm used in cached_sha2_password fast path.

    XOR(SHA256(password), SHA256(SHA256(SHA256(password)), nonce))
    r   )r8   Úsha256r   r   r   r   r    )r   ÚnonceÚp1Úp2Úp3Úresr#   s          r   Úscramble_caching_sha2ry   Á   s³   € ð ð Øˆså	Œ˜Ñ	!Ô	!×	(Ò	(Ñ	*Ô	*€BÝ	Œ˜Ñ	Ô	×	"Ò	"Ñ	$Ô	$€BÝ	Œ˜˜U™
Ñ	#Ô	#×	*Ò	*Ñ	,Ô	,€Bå
�B‰-Œ-€CÝ•3�r‘7”7‰^Œ^ð ð ˆØˆAˆˆŒ�"�Q”%‰ˆˆ‰ˆå�‰:Œ:Ðr   c                 ó   — | j         st          | d¦  «        S |                     ¦   «         r¡|                     ¦   «         | _        | j                             d¦  «        r| j        d d…         | _        t          r)t          d| j                             ¦   «         ›�¦  «         t          | j         | j        ¦  «        }t          | |¦  «        }| 
                    ¦   «         st          d|j        d d…         z  ¦  «        ‚|                     d¦  «         |                     ¦   «         }|dk    r@t          rt          d¦  «         |                      ¦   «         }|                     ¦   «          |S |d	k    rt          d
|z  ¦  «        ‚t          rt          d¦  «         | j        r.t          rt          d¦  «         t          | | j         dz   ¦  «        S | j        s…t          | d¦  «        }| 
                    ¦   «         st          d|j        d d…         z  ¦  «        ‚|j        dd …         | _        t          r't          | j                             d¦  «        ¦  «         t)          | j         | j        | j        ¦  «        }t          | |¦  «        }d S )Nr   rU   rc   z%caching sha2: Trying fast path. salt=z.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 connectionó   z/caching sha2: Unknown packet for public key: %sre   )r   rN   ri   rj   rP   rk   rg   rh   Úhexry   rm   r   rn   ÚadvanceÚ
read_uint8rI   rJ   rf   rl   ro   ra   )rK   rM   Ú	scrambledÚnrp   s        r   Úcaching_sha2_password_authrƒ   Õ   sz  € àŒ=ð %Ý˜$ Ñ$Ô$Ð$à
×!Ò!Ñ#Ô#ð *à—L’L‘N”NˆŒ	ØŒ9×Ò˜eÑ$Ô$ð 	'Øœ	 # 2 #œˆDŒIÝð 	OÝÐM¸$¼)¿-º-¹/¼/ÐMÐMÑNÔNÐNÝ)¨$¬-¸¼ÑCÔCˆ	Ý˜˜yÑ)Ô)ˆð ×!Ò!Ñ#Ô#ð 
ÝØ<¸s¼yÈÈ!È¼}ÑLñ
ô 
ð 	
ð ‡K‚K��N„N€NØ�ŠÑÔ€AàˆA‚v€vÝð 	;ÝÐ9Ñ:Ô:Ð:Ø×ÒÑ!Ô!ˆØ�ŠÑÔÐØˆ
àˆA‚v€vÝÐOÐRSÑSÑTÔTÐTåð 3ÝÐ1Ñ2Ô2Ð2à„|ð 7Ýð 	PÝÐNÑOÔOÐOÝ˜$ ¤°Ñ 5Ñ6Ô6Ð6àÔ!ð 	:Ý˜˜wÑ'Ô'ˆØ×%Ò%Ñ'Ô'ð 	Ý"ØAÀCÄIÈbÈqÈbÄMÑQñô ð ð "%¤¨1¨2¨2¤ˆÔÝð 	:Ý�$Ô(×/Ò/°Ñ8Ô8Ñ9Ô9Ð9å˜DœM¨4¬9°dÔ6LÑMÔM€DÝ
�T˜4Ñ
 Ô
 €C€C€Cr   )Ú__doc__Úerrr   Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   rY   r)   Ú	functoolsr	   r8   rg   r   Únewr   r   r   r(   r+   r5   rF   rN   rS   ra   rq   ry   rƒ   © r   r   ú<module>rŒ      sˆ  ððð ð "Ð !Ð !Ð !Ð !Ð !ðØ<Ð<Ð<Ð<Ð<Ð<ØDÐDÐDÐDÐDÐDÐDÐDØAÐAÐAÐAÐAÐAàÐÐøØð ð ð ØÐÐÐðøøøð Ð Ð Ð Ð Ð Ø €€€ð 	€Ø€Øˆ7�7”; Ñ'Ô'€ð%ð %ð %ðð ð ð €ð	
ð 	
ð 	
ð)ð )ð )ð#ð #ð #ðRð ð ð	!ð 	!ð 	!ðð ð ð,"ð "ð "ðBð ð ð(;!ð ;!ð ;!ð ;!ð ;!s   Š! ¡+ª+