§
    HŠtj¡/  ã                   óš   — d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
  G d„ de	¦  «        Z G d„ d	e	¦  «        Z G d
„ de	¦  «        ZdS )a­  
passlib.tests -- tests for passlib.utils.pbkdf2

.. warning::

    This module & it's functions have been deprecated, and superceded
    by the functions in passlib.crypto.  This file is being maintained
    until the deprecated functions are removed, and is only present prevent
    historical regressions up to that point.  New and more thorough testing
    is being done by the replacement tests in ``test_utils_crypto.py``.
é    )Úwith_statementN)ÚuÚJYTHON)ÚTestCaseÚhbc                   ó<   ‡ — e Zd ZdZdZddgZg d¢Zˆ fd„Zd„ Zˆ xZ	S )Ú	UtilsTestztest various utils functionszpasslib.utils.pbkdf2ÚhashlibÚiana))Úmd5r   zSCRAM-MD5-PLUSzMD-5)Úsha1zsha-1zSCRAM-SHA-1ÚSHA1)Úsha256zsha-256ÚSHA_256zsha2-256)Ú	ripemd160z
ripemd-160zSCRAM-RIPEMD-160Ú	RIPEmd160ÚripemdzSCRAM-RIPEMD)Útest128ztest-128ÚTEST128)Útest2r   zTEST-2)Ú	test3_128z	test3-128z
TEST-3-128c                 óŒ   •— t          t          | ¦  «                             ¦   «          t          j        ddt
          ¦  «         d S ©NÚignorez".*passlib.utils.pbkdf2.*deprecated)Úsuperr	   ÚsetUpÚwarningsÚfilterwarningsÚDeprecationWarning©ÚselfÚ	__class__s    €ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/tests/test_utils_pbkdf2.pyr   zUtilsTest.setUp/   s<   ø€ Ý�i˜ÑÔ×$Ò$Ñ&Ô&Ð&ÝÔ Ð*NÕPbÑcÔcÐcÐcÐcó    c                 óæ  — ddl m} ddlm} ddlm} | j        D ]} |d|¦  «         Œ|                      t          |dd¦  «         |                      t          |dd¦  «         |  	                     |t          d¦  «        ¦  «        d¦  «         |  	                     |d	¦  «        d¦  «         |                      t          |d¦  «         t          j        ¦   «         5  t          j        d
d¦  «          ||| j        ¦  «        D ]S}t!          | j        ¦  «        D ]<\  }}||         }|D ],} |||¦  «        }	|  	                    |	|d|›d|›d�¦  «         Œ-Œ=ŒT	 ddd¦  «         dS # 1 swxY w Y   dS )znorm_hash_name()r   )Úchain)Únorm_hash_name)Ú_known_hash_namesÚmd4NÚfakeÚMD4s   MD4r   z.*unknown hashzname=z	, format=ú:)Ú	itertoolsr&   Úpasslib.utils.pbkdf2r'   Úpasslib.crypto.digestr(   Úndn_formatsÚassertRaisesÚ
ValueErrorÚassertEqualr   Ú	TypeErrorr   Úcatch_warningsr   Ú
ndn_valuesÚ	enumerate)
r!   r&   r'   r(   ÚformatÚrowÚidxÚcorrectÚvalueÚresults
             r#   Útest_norm_hash_namezUtilsTest.test_norm_hash_name3   sJ  € à#Ð#Ð#Ð#Ð#Ð#Ø7Ð7Ð7Ð7Ð7Ð7Ø;Ð;Ð;Ð;Ð;Ð;ð Ô&ð 	*ð 	*ˆFØˆN˜5 &Ñ)Ô)Ð)Ð)Ø×Ò�* n°e¸TÑBÔBÐBØ×Ò�* n°e¸VÑDÔDÐDð 	×Ò˜˜­¨%©¬Ñ1Ô1°5Ñ9Ô9Ð9Ø×Ò˜˜¨Ñ/Ô/°Ñ7Ô7Ð7Ø×Ò�) ^°TÑ:Ô:Ð:õ Ô$Ñ&Ô&ð 		Kð 		KÝÔ# HÐ.>Ñ?Ô?Ð?Ø�uÐ.°´Ñ@Ô@ð Kð K�Ý#,¨TÔ-=Ñ#>Ô#>ð Kð K‘K�C˜Ø! #œh�GØ!$ð Kð K˜Ø!/ °°vÑ!>Ô!>˜Ø×(Ò(¨°°ØBGÀ%À%ØBHÀ&À&ð*JñKô Kð Kð KðKðKðKð		Kð 		Kð 		Kñ 		Kô 		Kð 		Kð 		Kð 		Kð 		Kð 		Kð 		Kð 		Køøøð 		Kð 		Kð 		Kð 		Kð 		Kð 		Ks   ÃA;E&Å&E*Å-E*)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚdescriptionPrefixr0   r6   r   r>   Ú__classcell__©r"   s   @r#   r	   r	      sz   ø€ € € € € Ø&Ð&Ø.Ðà˜fÐ%€Kðð ð €Jðdð dð dð dð dðKð Kð Kð Kð Kð Kð Kr$   r	   c                   óV  ‡ — e Zd ZdZdZd ed¦  «        ddd ed¦  «        fd	dd
ddd ed¦  «        fdd
ddd ed¦  «        fdd
ddd ed¦  «        fdd
ddd ed¦  «        fdd
ddd ed¦  «        fgZes$e                     dd
ddd ed¦  «        f¦  «         ˆ fd„Z	d„ Z
d„ Zˆ xZS )ÚPbkdf1_Testztest kdf helperszpasslib.utils.pbkdf2.pbkdf1()ó   passwordÚ78578E5A5D63CB06éè  é   r   Ú dc19847e05c64d2faf10ebfb4a3d2a20)rH   ó   saltrJ   r   r   r$   rM   é   r   Ú84é   Ú8475c6a8531a5d27Ú 8475c6a8531a5d27e386cd496457812cNÚ(4a8fd48e426ed081b535be5769892fa396293efbr)   Ú f7f2e91100a8f96190f2dd177cb26453c                 óŒ   •— t          t          | ¦  «                             ¦   «          t          j        ddt
          ¦  «         d S r   )r   rG   r   r   r   r   r    s    €r#   r   zPbkdf1_Test.setUpn   ó<   ø€ Ý�k˜4Ñ Ô ×&Ò&Ñ(Ô(Ð(ÝÔ Ð*NÕPbÑcÔcÐcÐcÐcr$   c                 ó~   — ddl m} | j        D ].\  }}}}}} ||||||¦  «        }|                      ||¦  «         Œ/dS )útest reference vectorsr   ©Úpbkdf1N)r.   rZ   Úpbkdf1_testsr3   )	r!   rZ   ÚsecretÚsaltÚroundsÚkeylenÚdigestr;   r=   s	            r#   Ú
test_knownzPbkdf1_Test.test_knownr   sm   € à/Ð/Ð/Ð/Ð/Ð/Ø=AÔ=Nð 	.ð 	.Ñ9ˆF�D˜& &¨&°'Ø�V˜F D¨&°&¸&ÑAÔAˆFØ×Ò˜V WÑ-Ô-Ð-Ð-ð	.ð 	.r$   c                 ó  ‡— ddl mŠ dˆfd„	} |¦   «          |                      t          |d¬¦  «         |                      t          |d¬	¦  «         |                      t          |d
¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |dd¬¦  «         |                      t          |d¬¦  «         dS )útest border casesr   rY   ó   secretrM   rN   r   c                 ó"   •—  ‰| ||||¦  «        S ©N© )r\   r]   r^   r_   ÚhashrZ   s        €r#   Úhelperz'Pbkdf1_Test.test_border.<locals>.helper|   s   ø€ Ø�6˜& $¨°¸Ñ=Ô=Ð=r$   ©r\   ©r]   Úmissing)rh   ©r^   Ú1éÿÿÿÿ©r_   é   )r_   rh   N)rd   rM   rN   rN   r   )r.   rZ   r1   r4   r2   )r!   ri   rZ   s     @r#   Útest_borderzPbkdf1_Test.test_bordery   s&  ø€ à/Ð/Ð/Ð/Ð/Ð/ð	>ð 	>ð 	>ð 	>ð 	>ð 	>àˆ‰Œˆð 	×Ò�) V°AÐÑ6Ô6Ð6Ø×Ò�) V°!ÐÑ4Ô4Ð4ð 	×Ò�* f°9ÐÑ=Ô=Ð=ð 	×Ò�* f°QÐÑ7Ô7Ð7Ø×Ò�) V°CÐÑ8Ô8Ð8ð 	×Ò�* f°RÐÑ8Ô8Ð8Ø×Ò�* f°R¸eÐÑDÔDÐDØ×Ò�) V°CÐÑ8Ô8Ð8Ð8Ð8r$   )r?   r@   rA   rB   rC   r   r[   r   Úappendr   ra   rr   rD   rE   s   @r#   rG   rG   S   s\  ø€ € € € € ØÐØ7Ðð 
�b�bÐ+Ñ,Ô,¨d°B¸ÀÀÐCeÑ@fÔ@fÐgð
 	7Ø	�g˜t Q¨°"°"°T±(´(Ð;Ø	�g˜t Q¨°"°"Ð5GÑ2HÔ2HÐIØ	�g˜t R¨°°Ð3UÑ0VÔ0VÐWØ	�g˜t T¨5°"°"Ð5WÑ2XÔ2XÐYØ	�g˜t T¨6°2°2Ð6`Ñ3aÔ3aÐbð!€Lð$ ð 
Ø×ÒØ˜' 4¨¨u°b°bÐ9[Ñ6\Ô6\Ð]ñ	
ô 	
ð 	
ðdð dð dð dð dð.ð .ð .ð9ð 9ð 9ð 9ð 9ð 9ð 9r$   rG   c                   ó  ‡ — e Zd ZdZdZ ed¦  «        ddddf ed¦  «        ddd	df ed
¦  «        ddd	df ed¦  «        ddddf ed¦  «        ddddf ed¦  «        ddddf ed¦  «        ddddf ed¦  «        ddddf ed¦  «        ddd	df ed¦  «        ddddf ed¦  «        dddd f ed!¦  «        d"d#ddf ed$¦  «        d% ed&¦  «        d'd(d)f ed*¦  «        d+dd,dd-f ed.¦  «        d+dd,d/d-fgZˆ fd0„Zd1„ Zd2„ Z	d3„ Z
d4„ Zˆ xZS )5ÚPbkdf2_Testztest pbkdf2() supportzpasslib.utils.pbkdf2.pbkdf2()Ú cdedb5281bb2f801565a1122b2563515rH   s   ATHENA.MIT.EDUraeburnrN   rK   Ú 01dbee7f4a9e243e988b62c73cda935dé   Ú@01dbee7f4a9e243e988b62c73cda935da05378b93244ec8f48a99e61ad799d86é    Ú@5c08eb61fdf71e4e4ec3cf6ba1f5512ba7e52ddbc5e5142f708a31e2e62b1e13i°  Ú@d1daa78615f287e6a1c8b120d7062a493f98d203e6be49a6adf4fa574b6e64ees   4VxxV4é   Ú@139c30c0966bc32ba55fdbf212530ac9c5ec59f1a452f5cc9ad940fea0598ed1s@   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXs   pass phrase equals block sizeÚ@9ccad6d468770cd51b10e6a68721be611a8b4d282601db3b36be9246915ec82asA   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXs   pass phrase exceeds block sizeÚ(0c60c80f961f0e71f3a9b524af6012062fe037a6rM   é   Ú(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957Ú(4b007901b765489abead49d926f721d065a429c1i   Ú23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsalté   Ú 56fa6aa75548099dcc37d7f03425e0c3s	   pass words   sa ltÚ€887CFF169EA8335235D8004242AA7D6187A41E3187DF0CE14E256D85ED97A97357AAA8FF0A3871AB9EEFF458392F462F495487387F685B7472FC6C29E293F0A0s   helloÚ€9290F727ED06C38BA4549EF7DE25CF5642659211B7FC076F2D28FEFD71784BB8D8F6FB244A8CC5C06240631B97008565A120764C0EE9C2CB0073994D79080136i'  é@   zhmac-sha512Ú e248fb6b13365146f8ac6307cc222812rd   é
   ú	hmac-sha1Ú(e248fb6b13365146f8ac6307cc2228127872da6dNc                 óŒ   •— t          t          | ¦  «                             ¦   «          t          j        ddt
          ¦  «         d S r   )r   ru   r   r   r   r   r    s    €r#   r   zPbkdf2_Test.setUp	  rV   r$   c                 óÊ   — ddl m} | j        D ]T}|dd…         \  }}}}}t          |¦  «        dk    r|d         nd} ||||||¦  «        }	|                      |	|¦  «         ŒUdS )rX   r   ©Úpbkdf2Nr}   é   rŒ   )r.   r‘   Úpbkdf2_test_vectorsÚlenr3   )
r!   r‘   r9   r;   r\   r]   r^   r_   Úprfr=   s
             r#   ra   zPbkdf2_Test.test_known  s“   € à/Ð/Ð/Ð/Ð/Ð/ØÔ+ð 	.ð 	.ˆCØ47¸¸¸´GÑ1ˆG�V˜T 6¨6Ý ™HœH¨šM˜M�#�a”&�&¨{ˆCØ�V˜F D¨&°&¸#Ñ>Ô>ˆFØ×Ò˜V WÑ-Ô-Ð-Ð-ð		.ð 	.r$   c                 ó  ‡— ddl mŠ dˆfd„	} |¦   «          |                      t          |d	¬
¦  «         |                      t          |d¬
¦  «         |                      t          |d¬
¦  «         |                      t          |d	¬¦  «         |                      t          |d¬¦  «          |d¬¦  «         |                      t
          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         dS )rc   r   r�   rH   rM   rN   NrŒ   c                 ó"   •—  ‰| ||||¦  «        S rf   rg   ©r\   r]   r^   r_   r•   r‘   s        €r#   ri   z'Pbkdf2_Test.test_border.<locals>.helper  ó   ø€ Ø�6˜& $¨°¸Ñ<Ô<Ð<r$   ro   rm   Úxrp   l   íÿO r}   rk   rj   zhmac-foo©r•   Úfoo©rH   rM   rN   NrŒ   )r.   r‘   r1   r2   r4   ÚOverflowErrorÚNotImplementedError©r!   ri   r‘   s     @r#   rr   zPbkdf2_Test.test_border  s¤  ø€ à/Ð/Ð/Ð/Ð/Ð/ð	=ð 	=ð 	=ð 	=ð 	=ð 	=àˆ‰Œˆð 	×Ò�* f°RÐÑ8Ô8Ð8Ø×Ò�* f°QÐÑ7Ô7Ð7Ø×Ò�) V°CÐÑ8Ô8Ð8ð 	×Ò�* f°RÐÑ8Ô8Ð8Ø×Ò�* f°QÐÑ7Ô7Ð7Øˆ�aÐÑÔÐØ×Ò�-¨¸ÐÑGÔGÐGØ×Ò�) V°CÐÑ8Ô8Ð8ð 	×Ò�) V°!ÐÑ4Ô4Ð4Ø×Ò�) V°AÐÑ6Ô6Ð6ð 	×Ò�* f°*ÐÑ=Ô=Ð=Ø×ÒÕ-¨v¸5ÐÑAÔAÐAØ×Ò�) V°ÐÑ3Ô3Ð3Ð3Ð3r$   c                 óÔ   ‡— ddl mŠ dˆfd„	}|                      t           |d¬	¦  «        ¦  «        d
¦  «         |                      t           |d¬	¦  «        ¦  «        d¦  «         dS )ztest keylen==Noner   r�   rH   rM   rN   NrŒ   c                 ó"   •—  ‰| ||||¦  «        S rf   rg   r˜   s        €r#   ri   z/Pbkdf2_Test.test_default_keylen.<locals>.helper5  r™   r$   r›   r�   zhmac-sha256rz   r�   )r.   r‘   r3   r”   r    s     @r#   Útest_default_keylenzPbkdf2_Test.test_default_keylen2  s�   ø€ à/Ð/Ð/Ð/Ð/Ð/ð	=ð 	=ð 	=ð 	=ð 	=ð 	=à×Ò�˜V˜V¨Ð4Ñ4Ô4Ñ5Ô5°rÑ:Ô:Ð:Ø×Ò�˜V˜V¨Ð6Ñ6Ô6Ñ7Ô7¸Ñ<Ô<Ð<Ð<Ð<r$   c           	      óX   — ddl m} d„ }|                      t          |dddd|¦  «         dS )	ztest custom prf functionr   r�   c                 óZ   — t          j        | |z   dz   ¦  «                             ¦   «         S )Ns   fooey)r
   r   r`   )ÚkeyÚmsgs     r#   r•   z(Pbkdf2_Test.test_custom_prf.<locals>.prf=  s'   € Ý”;˜s 3™w xÑ/Ñ0Ô0×7Ò7Ñ9Ô9Ð9r$   rd   rM   rJ   r�   N)r.   r‘   r1   rŸ   )r!   r‘   r•   s      r#   Útest_custom_prfzPbkdf2_Test.test_custom_prf:  sL   € à/Ð/Ð/Ð/Ð/Ð/ð	:ð 	:ð 	:à×ÒÕ-¨v°yÀ'È4ÐQSÐUXÑYÔYÐYÐYÐYr$   )r?   r@   rA   rB   rC   r   r“   r   ra   rr   r£   r¨   rD   rE   s   @r#   ru   ru   “   s…  ø€ € € € € ØÐØ7Ðð �Ð5Ñ6Ô6ØÐ5°q¸"ðð �Ð5Ñ6Ô6ØÐ5°q¸"ðð �ÐUÑVÔVØÐ5°q¸"ðð �ÐUÑVÔVØÐ5°t¸Rðð �ÐUÑVÔVØÐ@À!ÀRðð �ÐUÑVÔVØÐ9¸4Àðð �ÐUÑVÔVØÐ:¸DÀ"ðð �Ð=Ñ>Ô>Ø˜W a¨ðð �Ð=Ñ>Ô>Ø˜W a¨ðð �Ð=Ñ>Ô>Ø˜W d¨Bðð �ÐGÑHÔHØ+Ø7Ø�bð	ð �Ð5Ñ6Ô6Ø 
¨D°"ðð ˆrð !ñ "ô "ð Øˆrð !ñ "ô "ð �b˜-ð	ð �Ð5Ñ6Ô6Ø˜7 B¨¨Kðð
 �Ð=Ñ>Ô>Ø˜7 B¨¨kððWp
Ððddð dð dð dð dð.ð .ð .ð4ð 4ð 4ð8=ð =ð =ðZð Zð Zð Zð Zð Zð Zr$   ru   )rB   Ú
__future__r   r
   r   Úpasslib.utils.compatr   r   Úpasslib.tests.utilsr   r   r	   rG   ru   rg   r$   r#   ú<module>r¬      s  ðð
ð 
ð &Ð %Ð %Ð %Ð %Ð %à €€€Ø €€€ð +Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ð
2Kð 2Kð 2Kð 2Kð 2K�ñ 2Kô 2Kð 2Kðn;9ð ;9ð ;9ð ;9ð ;9�(ñ ;9ô ;9ð ;9ð@lZð lZð lZð lZð lZ�(ñ lZô lZð lZð lZð lZr$   