Ë
    àU.j¡/  ã                   ó†   — 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y)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
        «       y ©NÚignorez".*passlib.utils.pbkdf2.*deprecated)Úsuperr	   ÚsetUpÚwarningsÚfilterwarningsÚDeprecationWarning©ÚselfÚ	__class__s    €úaC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\passlib/tests/test_utils_pbkdf2.pyr   zUtilsTest.setUp/   s$   ø€ ÜŒi˜Ñ$Ô&Ü×Ñ Ð*NÔPbÕcó    c                 ó¤  — ddl m} ddlm} ddlm} | j                  D ]  } |d|«       Œ | j                  t        |dd«       | j                  t        |dd«       | j                   |t        d«      «      d«       | j                   |d	«      d«       | j                  t        |d«       t        j                  «       5  t        j                  d
d«        ||| j                  «      D ]N  }t!        | j                  «      D ]4  \  }}||   }|D ]%  } |||«      }	| j                  |	|d|›d|›d�«       Œ' Œ6 ŒP 	 ddd«       y# 1 sw Y   yxY w)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   s*  € å#Ý7Ý;ð ×&Ô&ˆFÙ˜5 &Õ)ð 'à×Ñœ* n°e¸TÔBØ×Ñœ* n°e¸VÔDð 	×Ñ™¬¨%«Ó1°5Ô9Ø×Ñ™¨Ó/°Ô7Ø×Ñœ) ^°TÔ:ô ×$Ñ$Õ&Ü×#Ñ# HÐ.>Ô?ÙÐ.°·±Ö@�Ü#,¨T×-=Ñ-=Ö#>‘K�C˜Ø! #™h�GÛ!$˜Ù!/°°vÓ!>˜Ø×(Ñ(¨±ÚBGÚBHð*JõKñ "%ñ $?ñ A÷ '×&Ñ&ús   ÃA;EÅE)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚdescriptionPrefixr0   r6   r   r>   Ú__classcell__©r"   s   @r#   r	   r	      s)   ø„ Ù&Ø.Ðà˜fÐ%€Kò€JôdöKr$   r	   c                   ó  ‡ — 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j                  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
        «       y r   )r   rG   r   r   r   r   r    s    €r#   r   zPbkdf1_Test.setUpn   ó$   ø€ ÜŒk˜4Ñ&Ô(Ü×Ñ Ð*NÔPbÕcr$   c                 ó|   — ddl m} | j                  D ]'  \  }}}}}} ||||||«      }| j                  ||«       Œ) y)útest reference vectorsr   ©Úpbkdf1N)r.   rZ   Úpbkdf1_testsr3   )	r!   rZ   ÚsecretÚsaltÚroundsÚkeylenÚdigestr;   r=   s	            r#   Ú
test_knownzPbkdf1_Test.test_knownr   sE   € å/Ø=A×=NÔ=NÑ9ˆF�D˜& &¨&°'Ù˜F D¨&°&¸&ÓAˆFØ×Ñ˜V WÕ-ñ >Or$   c                 ó®  ‡— ddl mŠ dˆfd„	} |«        | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |d¬	«       | j                  t        |d¬
«       | j                  t        |d¬
«       | j                  t        |d¬«       | j                  t        |dd¬«       | j                  t        |d¬«       y)útest border casesr   rY   rN   r   c                 ó   •—  ‰| ||||«      S ©N© )r\   r]   r^   r_   ÚhashrZ   s        €r#   Úhelperz'Pbkdf1_Test.test_border.<locals>.helper|   s   ø€ Ù˜& $¨°¸Ó=Ð=r$   ©r\   ©r]   Úmissing)rg   ©r^   Ú1éÿÿÿÿ©r_   é   )r_   rg   N)ó   secretrM   rN   rN   r   )r.   rZ   r1   r4   r2   )r!   rh   rZ   s     @r#   Útest_borderzPbkdf1_Test.test_bordery   sÂ   ø€ å/õ	>áŒð 	×Ñœ) V°AÐÔ6Ø×Ñœ) V°!ÐÔ4ð 	×Ñœ* f°9ÐÔ=ð 	×Ñœ* f°QÐÔ7Ø×Ñœ) V°CÐÔ8ð 	×Ñœ* f°RÐÔ8Ø×Ñœ* f°R¸eÐÔDØ×Ñœ) V°CÐÕ8r$   )r?   r@   rA   rB   rC   r   r[   r   Úappendr   ra   rr   rD   rE   s   @r#   rG   rG   S   sÛ   ø„ ÙØ7Ðð 
‘bÐ+Ó,¨d°B¸ÁÐCeÓ@fÐgð
 	7Ø	�g˜t Q¨±"°T³(Ð;Ø	�g˜t Q¨±"Ð5GÓ2HÐIØ	�g˜t R¨±Ð3UÓ0VÐWØ	�g˜t T¨5±"Ð5WÓ2XÐYØ	�g˜t T¨6±2Ð6`Ó3aÐbð!€Lñ$ Ø×ÑØ˜' 4¨¨u±bÐ9[Ó6\Ð]ô	
ôdò.ö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Ú e248fb6b13365146f8ac6307cc222812rq   é
   ú	hmac-sha1Ú(e248fb6b13365146f8ac6307cc2228127872da6dNc                 ó`   •— t         t        | �  «        t        j                  ddt
        «       y r   )r   ru   r   r   r   r   r    s    €r#   r   zPbkdf2_Test.setUp	  rV   r$   c                 ó®   — ddl m} | j                  D ]@  }|dd \  }}}}}t        |«      dk(  r|d   nd} ||||||«      }	| j	                  |	|«       ŒB y)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  sb   € å/Ø×+Ô+ˆCØ47¸¸°GÑ1ˆG�V˜T 6¨6Ü ›H¨šM�#�a’&¨{ˆCÙ˜F D¨&°&¸#Ó>ˆFØ×Ñ˜V WÕ-ñ	 ,r$   c                 ó~  ‡— ddl mŠ dˆfd„	} |«        | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |d¬	«       | j                  t        |d¬	«        |d¬	«       | j                  t
        |d
¬	«       | j                  t        |d¬	«       | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |d¬«       y)rc   r   r�   rN   Nc                 ó   •—  ‰| ||||«      S re   rf   ©r\   r]   r^   r_   r•   r‘   s        €r#   rh   z'Pbkdf2_Test.test_border.<locals>.helper  ó   ø€ Ù˜& $¨°¸Ó<Ð<r$   rn   rl   Úxro   l   íÿO r}   rj   ri   zhmac-foo©r•   Úfoo©rH   rM   rN   NrŒ   )r.   r‘   r1   r2   r4   ÚOverflowErrorÚNotImplementedError©r!   rh   r‘   s     @r#   rr   zPbkdf2_Test.test_border  s  ø€ å/õ	=áŒð 	×Ñœ* f°RÐÔ8Ø×Ñœ* f°QÐÔ7Ø×Ñœ) V°CÐÔ8ð 	×Ñœ* f°RÐÔ8Ø×Ñœ* f°QÐÔ7Ù�aÕØ×Ñœ-¨¸ÐÔGØ×Ñœ) V°CÐÔ8ð 	×Ñœ) V°!ÐÔ4Ø×Ñœ) V°AÐÔ6ð 	×Ñœ* f°*ÐÔ=Ø×ÑÔ-¨v¸5ÐÔAØ×Ñœ) V°ÐÕ3r$   c                 ó¦   ‡— ddl mŠ d
ˆfd„	}| j                  t         |d¬«      «      d«       | j                  t         |d¬«      «      d	«       y)ztest keylen==Noner   r�   NrŒ   c                 ó   •—  ‰| ||||«      S re   rf   r˜   s        €r#   rh   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¨Ô4Ó5°rÔ:Ø×Ñœ™V¨Ô6Ó7¸Õ<r$   c           	      óL   — ddl m} d„ }| j                  t        |dddd|«       y)	ztest custom prf functionr   r�   c                 óT   — t        j                  | |z   dz   «      j                  «       S )Ns   fooey)r
   r   r`   )ÚkeyÚmsgs     r#   r•   z(Pbkdf2_Test.test_custom_prf.<locals>.prf=  s#   € Ü—;‘;˜s 3™w xÑ/Ó0×7Ñ7Ó9Ð9r$   rq   rM   rJ   r�   N)r.   r‘   r1   rŸ   )r!   r‘   r•   s      r#   Útest_custom_prfzPbkdf2_Test.test_custom_prf:  s'   € å/ò	:à×ÑÔ-¨v°yÀ'È4ÐQSÐUXÕYr$   )r?   r@   rA   rB   rC   r   r“   r   ra   rr   r£   r¨   rD   rE   s   @r#   ru   ru   “   sÌ  ø„ ÙØ7Ðñ Ð5Ó6ØÐ5°q¸"ðñ Ð5Ó6ØÐ5°q¸"ðñ ÐUÓVØÐ5°q¸"ðñ ÐUÓVØÐ5°t¸Rðñ ÐUÓVØÐ@À!ÀRðñ ÐUÓVØÐ9¸4Àðñ ÐUÓVØÐ:¸DÀ"ðñ Ð=Ó>Ø˜W a¨ðñ Ð=Ó>Ø˜W a¨ðñ Ð=Ó>Ø˜W d¨Bðñ ÐGÓHØ+Ø7Ø�bð	ñ Ð5Ó6Ø 
¨D°"ðñ ð !ó "ð Ùð !ó "ð �b˜-ð	ñ Ð5Ó6Ø˜7 B¨¨Kðñ
 Ð=Ó>Ø˜7 B¨¨kððWp
Ðôddò.ò4ò8=öZr$   ru   )rB   Ú
__future__r   r
   r   Úpasslib.utils.compatr   r   Úpasslib.tests.utilsr   r   r	   rG   ru   rf   r$   r#   Ú<module>r¬      sI   ðñ
õ &ã Û ÷ +ß ,ô
2K�ô 2Kôn;9�(ô ;9ô@lZ�(õ lZr$   