§
    HŠtjþO  ã                   óÒ   — d Z ddlmZmZ ddlmZ ddlZddlZddlm	Z	 ddl
mZmZmZ ddlmZmZmZmZ  G d„ d	e¦  «        Z G d
„ de¦  «        ZddlmZmZ  G d„ de¦  «        ZdS )z(tests for passlib.utils.(des|pbkdf2|md4)é    )Úwith_statementÚdivision)ÚhexlifyN)ÚUnknownHashError)ÚPY3ÚuÚJYTHON)ÚTestCaseÚ	TEST_MODEÚ
skipUnlessÚhbc                   óJ   — e Zd ZdZdZddgZg d¢Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ ZdS )ÚHashInfoTestztest various crypto functionszpasslib.crypto.digestÚhashlibÚiana))Úmd5r   zSCRAM-MD5-PLUSzMD-5)Úsha1zsha-1zSCRAM-SHA-1ÚSHA1)Úsha256úsha-256ÚSHA_256zsha2-256)Ú	ripemd160z
ripemd-160zSCRAM-RIPEMD-160Ú	RIPEmd160ÚripemdzSCRAM-RIPEMD)Úsha4_256zsha4-256zSHA4-256z	SHA-4-256)Útest128ztest-128ÚTEST128)Útest2r   zTEST-2)Ú	test3_128z	test3-128z
TEST-3-128c                 ó�  — ddl m} ddlm}m} t          j        ¦   «         }|                     ¦   «          |                      |j	        ¦  «         t          j
        dd¦  «         t          j
        dd¦  «         |                       |t          d¦  «        ¦  «        d¦  «         |                       |d	¦  «        d¦  «         |                      t          |d
¦  «          ||| j        ¦  «        D ]S}t!          | j        ¦  «        D ]<\  }}||         }|D ],}	 ||	|¦  «        }
|                      |
|d|	›d|›d�¦  «         Œ-Œ=ŒTd
S )znorm_hash_name()r   )Úchain)Únorm_hash_nameÚ_known_hash_namesÚignorez.*unknown hashz.*unsupported hashÚMD4Úmd4s   MD4Nzname=z	, format=ú:)Ú	itertoolsr!   Úpasslib.crypto.digestr"   r#   ÚwarningsÚcatch_warningsÚ	__enter__Ú
addCleanupÚ__exit__ÚfilterwarningsÚassertEqualr   ÚassertRaisesÚ	TypeErrorÚnorm_hash_samplesÚ	enumerateÚnorm_hash_formats)Úselfr!   r"   r#   ÚctxÚrowÚidxÚformatÚcorrectÚvalueÚresults              ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/tests/test_crypto_digest.pyÚtest_norm_hash_namez HashInfoTest.test_norm_hash_name.   s¦  € à#Ð#Ð#Ð#Ð#Ð#ØKÐKÐKÐKÐKÐKÐKÐKõ Ô%Ñ'Ô'ˆØ�Š‰ŒˆØ�Š˜œÑ%Ô%Ð%ÝÔ Ð*:Ñ;Ô;Ð;ÝÔ Ð*>Ñ?Ô?Ð?ð 	×Ò˜˜­¨%©¬Ñ1Ô1°5Ñ9Ô9Ð9Ø×Ò˜˜¨Ñ/Ô/°Ñ7Ô7Ð7Ø×Ò�) ^°TÑ:Ô:Ð:ð �5Ð*¨DÔ,BÑCÔCð 	Gð 	GˆCÝ(¨Ô)?Ñ@Ô@ð Gð G‘��VØ˜cœ(�Ø ð Gð G�EØ+˜^¨E°6Ñ:Ô:�FØ×$Ò$ V¨W¨WØ>C¸e¸eØ>D¸f¸fð&FñGô Gð Gð GðGðGð	Gð 	Gó    c                 ó,  — ddl m} |                      t          |d¦  «         |                      t          |d¦  «         |                      t          |d¦  «         |                       |d¦  «        t
          j        ddf¦  «         	 t          j        d	¦  «         d
}n# t          $ r d}Y nw xY w|rk |d	¦  «        }|d         }|                      ||ddf¦  «         |                      t           |d¦  «         	                    ¦   «         ¦  «        d¦  «         n|                      t          |d	¦  «         	 t          j        d¦  «         d
}n# t          $ r d}Y nw xY w |d¦  «        }|d         }|sddl
m} |                      ||¦  «         |                      ||ddf¦  «         |                      t           |d¦  «         	                    ¦   «         ¦  «        d¦  «         |                       |d¦  «         |d¦  «        ¦  «         dS )zlookup_hash() -- constructorr   ©Úlookup_hashÚnewÚ__name__Úsha4r   é   é@   ÚshaTFé   s   abcs(   0164b8a914cd2a5e74c4f7ff082c4d97f1edf880r&   )r&   s    a448017aaf21d8525fc10ae87aa6729dN)r)   rC   r1   Ú
ValueErrorr0   r   r   rD   r   ÚdigestÚpasslib.crypto._md4r&   ÚassertIs)r6   rC   Úhas_shaÚrecordÚconstÚhas_md4r&   s          r>   Útest_lookup_hash_ctorz"HashInfoTest.test_lookup_hash_ctorI   sl  € à5Ð5Ð5Ð5Ð5Ð5ð 	×Ò�* k°5Ñ9Ô9Ð9Ø×Ò�* k°:Ñ>Ô>Ð>Ø×Ò�* k°6Ñ:Ô:Ð:ð 	×Ò˜˜ UÑ+Ô+­g¬k¸2¸rÐ-BÑCÔCÐCð	ÝŒK˜ÑÔÐØˆGˆGøÝð 	ð 	ð 	ØˆGˆGˆGð	øøøàð 	>Ø �[ Ñ'Ô'ˆFØ˜1”IˆEØ×Ò˜V e¨R° _Ñ5Ô5Ð5Ø×Ò�W U U¨6¡]¤]×%9Ò%9Ñ%;Ô%;Ñ<Ô<ØHñJô Jð Jð Jð ×Ò�j¨+°uÑ=Ô=Ð=ð	ÝŒK˜ÑÔÐØˆGˆGøÝð 	ð 	ð 	ØˆGˆGˆGð	øøøà�˜UÑ#Ô#ˆØ�q”	ˆØð 	&Ø/Ð/Ð/Ð/Ð/Ð/Ø�MŠM˜% Ñ%Ô%Ð%Ø×Ò˜ %¨¨R Ñ1Ô1Ð1Ø×Ò�   v¡¤×!5Ò!5Ñ!7Ô!7Ñ8Ô8Ø<ñ	>ô 	>ð 	>ð 	�Š�k�k %Ñ(Ô(¨+¨+°eÑ*<Ô*<Ñ=Ô=Ð=Ð=Ð=s$   ÂB ÂB.Â-B.Ä;E ÅE!Å E!c                 óÂ  — ddl m} |                      t          |d¦  «          |dd¬¦  «        }|                      |j        ¦  «         |                      t          d|j        ¦  «         |                      |j	        d¦  «         |                      |j
        d¦  «         |                      |j        d¦  «          |dd¬¦  «        }|                      ||¦  «         dS )z"lookup_hash() -- unknown hash namer   rB   Úxxx256F©Úrequiredzunknown hash: 'xxx256'N)r)   rC   r1   r   ÚassertFalseÚ	supportedÚassertRaisesRegexrQ   r0   ÚnameÚdigest_sizeÚ
block_sizerN   )r6   rC   ÚinfoÚinfo2s       r>   Útest_lookup_hash_w_unknown_namez,HashInfoTest.test_lookup_hash_w_unknown_namew   sð   € à5Ð5Ð5Ð5Ð5Ð5ð 	×ÒÕ*¨K¸ÑBÔBÐBð ˆ{˜8¨eÐ4Ñ4Ô4ˆØ×Ò˜œÑ(Ô(Ð(Ø×ÒÕ/Ð1IÈ4Ì:ÑVÔVÐVØ×Ò˜œ HÑ-Ô-Ð-Ø×Ò˜Ô)¨4Ñ0Ô0Ð0Ø×Ò˜œ¨$Ñ/Ô/Ð/ð �˜H¨uÐ5Ñ5Ô5ˆØ�Š�e˜TÑ"Ô"Ð"Ð"Ð"r@   c                 óà  — ddl m}m}  |dd¬¦  «        j        s|                      d¦  «        ‚ |¦   «          |                      |d¦  «         d}|                      t          ||d¦  «          |dd¬¦  «        }|                      |j	        |¦  «         |                      t          ||j
        ¦  «         |                      |j        d¦  «         |                      |j        d	¦  «         d
S )z<
        lookup_hash() -- test set_mock_fips_mode()
        r   )rC   Ú_set_mock_fips_moder   FrV   zmd5 not supportedz'md5' hash disabled for fipsrG   rH   N)r)   rC   rb   rY   ÚskipTestr-   rZ   r   ÚassertRegexÚ
error_textrQ   r0   r\   r]   )r6   rC   rb   Úpatr^   s        r>   Útest_mock_fips_modez HashInfoTest.test_mock_fips_modeŠ   s  € ð 	KÐJÐJÐJÐJÐJÐJÐJð ˆ{˜5¨5Ð1Ñ1Ô1Ô;ð 	5Ø—-’-Ð 3Ñ4Ô4Ð4ð 	ÐÑÔÐØ�ŠÐ+¨UÑ3Ô3Ð3à,ˆØ×ÒÕ/°°kÀ5ÑIÔIÐIàˆ{˜5¨5Ð1Ñ1Ô1ˆØ×Ò˜œ¨#Ñ.Ô.Ð.Ø×ÒÕ/°°d´jÑAÔAÐAð 	×Ò˜Ô)¨2Ñ.Ô.Ð.Ø×Ò˜œ¨"Ñ-Ô-Ð-Ð-Ð-r@   c                 ó,  — ddl m}  |d¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                       |d¦  «        |¦  «          |d¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d	¦  «         d
S )zlookup_hash() -- metadatar   rB   r   r   rH   é    zSHA2-256r   rG   N)r)   rC   r0   r[   Ú	iana_namer]   r\   rN   ©r6   rC   r^   s      r>   Útest_lookup_hash_metadataz&HashInfoTest.test_lookup_hash_metadata£   s  € ð 	6Ð5Ð5Ð5Ð5Ð5ð ˆ{˜8Ñ$Ô$ˆØ×Ò˜œ HÑ-Ô-Ð-Ø×Ò˜œ¨Ñ3Ô3Ð3Ø×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜Ô)¨2Ñ.Ô.Ð.Ø�Š�k�k *Ñ-Ô-¨tÑ4Ô4Ð4ð ˆ{˜5Ñ!Ô!ˆØ×Ò˜œ EÑ*Ô*Ð*Ø×Ò˜œ¨Ñ/Ô/Ð/Ø×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜Ô)¨2Ñ.Ô.Ð.Ð.Ð.r@   c                 óæ   — ddl m}  |d¦  «        }|                       ||¦  «        |¦  «         |                       ||j        ¦  «        |¦  «         |                      t
          |d¦  «         dS )z lookup_hash() -- alternate typesr   rB   r   é{   N)r)   rC   rN   rQ   r1   r2   rk   s      r>   Útest_lookup_hash_alt_typesz'HashInfoTest.test_lookup_hash_alt_types·   s�   € ð 	6Ð5Ð5Ð5Ð5Ð5àˆ{˜8Ñ$Ô$ˆØ�Š�k�k $Ñ'Ô'¨Ñ.Ô.Ð.Ø�Š�k�k $¤*Ñ-Ô-¨tÑ4Ô4Ð4à×Ò�) [°#Ñ6Ô6Ð6Ð6Ð6r@   N)rE   Ú
__module__Ú__qualname__Ú__doc__ÚdescriptionPrefixr5   r3   r?   rS   r`   rg   rl   ro   © r@   r>   r   r      s�   € € € € € Ø'Ð'Ø/Ðð # FÐ+Ððð ð Ðð"Gð Gð Gð6,>ð ,>ð ,>ð\#ð #ð #ð&.ð .ð .ð2/ð /ð /ð(	7ð 	7ð 	7ð 	7ð 	7r@   r   c                   óF  — 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¦  «         d„ Z	d„ Z
dS )ÚPbkdf1_Testztest kdf helperszpasslib.crypto.digest.pbkdf1ó   passwordÚ78578E5A5D63CB06éè  rG   r   Ú dc19847e05c64d2faf10ebfb4a3d2a20)rw   ó   saltry   r   r   r@   r{   é   r   Ú84é   Ú8475c6a8531a5d27Ú 8475c6a8531a5d27e386cd496457812cNÚ(4a8fd48e426ed081b535be5769892fa396293efbr&   Ú f7f2e91100a8f96190f2dd177cb26453c                 ó~   — ddl m} | j        D ].\  }}}}}} ||||||¦  «        }|                      ||¦  «         Œ/dS )útest reference vectorsr   ©Úpbkdf1N)r)   r†   Úpbkdf1_testsr0   )	r6   r†   ÚsecretÚsaltÚroundsÚkeylenrL   r;   r=   s	            r>   Ú
test_knownzPbkdf1_Test.test_knownâ   sm   € à0Ð0Ð0Ð0Ð0Ð0Ø=AÔ=Nð 	.ð 	.Ñ9ˆF�D˜& &¨&°'Ø�V˜F 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   r…   ó   secretr{   r|   r   c                 ó"   •—  ‰|| |||¦  «        S ©Nrt   )rˆ   r‰   rŠ   r‹   Úhashr†   s        €r>   Úhelperz'Pbkdf1_Test.test_border.<locals>.helperì   s   ø€ Ø�6˜$ ¨¨f°fÑ=Ô=Ð=r@   ©rˆ   ©r‰   Úmissing)r’   ©rŠ   Ú1éÿÿÿÿ©r‹   é   )r‹   r’   N)r�   r{   r|   r|   r   )r)   r†   r1   r2   rK   )r6   r“   r†   s     @r>   Útest_borderzPbkdf1_Test.test_borderé   s&  ø€ à0Ð0Ð0Ð0Ð0Ð0ð	>ð 	>ð 	>ð 	>ð 	>ð 	>àˆ‰Œˆð 	×Ò�) 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@   )rE   rp   rq   rr   rs   r   r‡   r	   ÚappendrŒ   rœ   rt   r@   r>   rv   rv   Ç   s3  € € € € € ØÐØ6Ðð 
�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\Ð]ñ	
ô 	
ð 	
ð.ð .ð .ð9ð 9ð 9ð 9ð 9r@   rv   )Úpbkdf2_hmacÚPBKDF2_BACKENDSc                   óv  — e Zd ZdZdd                     e¦  «        z  Zg  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/d0d1d)d-f‘ ed2¦  «        ddddd-f‘ ed3¦  «        ddd
dd-f‘ ed4¦  «        ddddd-f‘ ed5¦  «        dd dd6d-f‘ ed7¦  «        d8dd9dd-f‘ ed:¦  «        dd8d9dd-f‘ ed;¦  «        d#d$ddd-f‘ ed<¦  «        ddddd*f‘ ed=¦  «        ddd
dd*f‘ ed>¦  «        ddddd*f‘ ed?¦  «        dd dd@d*f‘ ed¦  «        dddddAf‘ edB¦  «        dCddDddAf‘ edE¦  «        dCddDdFdAf‘ edG¦  «        dCddHd6dIf‘ edJ¦  «        dCddHd6dKf‘ZdL„ Z	dM„ Z
dN„ ZdO„ ZdFS )PÚ
Pbkdf2Testztest pbkdf2() supportz2passlib.crypto.digest.pbkdf2_hmac() <backends: %s>z, Ú cdedb5281bb2f801565a1122b2563515rw   s   ATHENA.MIT.EDUraeburnr|   rG   Ú 01dbee7f4a9e243e988b62c73cda935dé   Ú@01dbee7f4a9e243e988b62c73cda935da05378b93244ec8f48a99e61ad799d86ri   Ú@5c08eb61fdf71e4e4ec3cf6ba1f5512ba7e52ddbc5e5142f708a31e2e62b1e13i°  Ú@d1daa78615f287e6a1c8b120d7062a493f98d203e6be49a6adf4fa574b6e64ees   4VxxV4é   Ú@139c30c0966bc32ba55fdbf212530ac9c5ec59f1a452f5cc9ad940fea0598ed1s@   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXs   pass phrase equals block sizeÚ@9ccad6d468770cd51b10e6a68721be611a8b4d282601db3b36be9246915ec82asA   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXs   pass phrase exceeds block sizeÚ(0c60c80f961f0e71f3a9b524af6012062fe037a6r{   rJ   Ú(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957Ú(4b007901b765489abead49d926f721d065a429c1i   Ú23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsalté   Ú 56fa6aa75548099dcc37d7f03425e0c3s	   pass words   sa ltÚ€887CFF169EA8335235D8004242AA7D6187A41E3187DF0CE14E256D85ED97A97357AAA8FF0A3871AB9EEFF458392F462F495487387F685B7472FC6C29E293F0A0s   helloÚ€9290F727ED06C38BA4549EF7DE25CF5642659211B7FC076F2D28FEFD71784BB8D8F6FB244A8CC5C06240631B97008565A120764C0EE9C2CB0073994D79080136i'  rH   Úsha512Ú€55ac046e56e3089fec1691c22544b605f94185216dde0465e68b9d57c20dacbc49ca9cccf179b645991664b39d77ef317c71b845b1e30bd509112041d3a19783s   passwdr   Ú€4ddcd8f60b98be21830cee5ef22701f9641a4418d04c0414aeff08876b34ab56a1d425a1225833549adb841b51c9b3176a272bdebba1d078478f62b397f33c8ds   Passwords   NaCli€8 Ú@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17bÚ@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43Ú@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aÚP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9é(   Ú@9e83f279c040f2a11aa4a02b24c418f2d3cb39560c9627fa4f47e3bcc2897c3dr@   i   Ú@ea5808411eb0c7e830deab55096cee582761e22a9bc034e3ece925225b07bf46Ú 89b69d0516f829893c696226650a8687Ú@867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252Ú@e1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cÚ@d197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5Ú�6e23f27638084b0f7ea1734e0d9841f55dd29ea60a834466f3396bac801fac1eeb63802f03a0b4acd7603e3699c8b74437be83ff01ad7f55dac1ef60f4d56480c35ee68fd52c6936éH   r   Ú e248fb6b13365146f8ac6307cc222812r�   é
   Ú(e248fb6b13365146f8ac6307cc2228127872da6dNÚPb1d5485772e6f76d5ebdc11b38d3eff0a5b2bd50dc11f937e86ecacd0cd40d1b9113e0734e3b76a3é>   r   ÚPea014cc01f78d3883cac364bb5d054e2be238fb0b6081795a9d84512126e3129062104d2183464c4r&   c                 óÆ   — | j         D ]X}|dd…         \  }}}}}t          |¦  «        dk    r|d         nd}t          |||||¦  «        }|                      ||¦  «         ŒYdS )r„   Nr¨   é   r   )Úpbkdf2_test_vectorsÚlenrž   r0   )	r6   r8   r;   rˆ   r‰   rŠ   r‹   rL   r=   s	            r>   rŒ   zPbkdf2Test.test_known×  s   € àÔ+ð 	.ð 	.ˆCØ47¸¸¸´GÑ1ˆG�V˜T 6¨6Ý" 3™xœx¨1š}˜}�S˜”V�V°&ˆFÝ  ¨°°v¸vÑFÔFˆFØ×Ò˜V WÑ-Ô-Ð-Ð-ð		.ð 	.r@   c                 ó\  — ddl m} 	 ddl}d}n# t          $ r d}Y nw xY w|                      d|v |¦  «         	 ddlm} |j        dk    }n# t          $ r d}Y nw xY w|                      d	|v |¦  «         dd
lm	} |r|  
                    d|¦  «         dS |  
                    d|¦  «         dS )z$verify expected backends are presentr   )rŸ   NTFÚ
fastpbkdf2©rž   r   zhashlib-ssl)r   zbuiltin-from-byteszbuiltin-unpack)r)   rŸ   rÎ   ÚImportErrorr0   r   rž   rp   Úpasslib.utils.compatr   ÚassertIn)r6   rŸ   rÎ   Úhas_fastpbkdf2rž   Úhas_hashlib_sslr   s          r>   Útest_backendszPbkdf2Test.test_backendsß  s$  € à9Ð9Ð9Ð9Ð9Ð9ð	#ØÐÐÐØ!ˆNˆNøÝð 	#ð 	#ð 	#Ø"ˆNˆNˆNð	#øøøà×Ò˜¨Ð8¸.ÑIÔIÐIð	$Ø+Ð+Ð+Ð+Ð+Ð+Ø)Ô4¸	ÒAˆOˆOøÝð 	$ð 	$ð 	$Ø#ˆOˆOˆOð	$øøøà×Ò˜¨/Ð9¸?ÑKÔKÐKð 	-Ð,Ð,Ð,Ð,Ð,Øð 	=Ø�MŠMÐ.°Ñ@Ô@Ð@Ð@Ð@ð �MŠMÐ*¨OÑ<Ô<Ð<Ð<Ð<s   ˆ ��ºA ÁAÁAc                 ó¸  — dd„} |¦   «          |                       t          |d¬¦  «         |                       t          |d	¬¦  «         |                       t          |d
¬¦  «          |d¬¦  «         |                       t          |d¬¦  «         |                       t          |d	¬¦  «         |                       t          |d¬¦  «         |                       t          |d
¬¦  «         |                       t          |d¬¦  «         |                       t          |d¬¦  «         |                       t          |d¬¦  «         |                       t          |d¬¦  «         dS )rŽ   rw   r{   r|   Nr   c                 ó(   — t          || |||¦  «        S r‘   rÏ   ©rˆ   r‰   rŠ   r‹   rL   s        r>   r“   z&Pbkdf2Test.test_border.<locals>.helperý  ó   € Ý˜v v¨t°V¸VÑDÔDÐDr@   r™   r—   r   Úxrš   l   íÿO r¨   r•   r”   Úfoo©rL   ©rw   r{   r|   Nr   )r1   rK   r2   ÚOverflowError©r6   r“   s     r>   rœ   zPbkdf2Test.test_borderû  sq  € ð	Eð 	Eð 	Eð 	Eàˆ‰Œˆð 	×Ò�* f°RÐÑ8Ô8Ð8Ø×Ò�* f°QÐÑ7Ô7Ð7Ø×Ò�) V°CÐÑ8Ô8Ð8ð 	ˆ�aÐÑÔÐØ×Ò�* f°RÐÑ8Ô8Ð8Ø×Ò�* f°QÐÑ7Ô7Ð7ð 	×Ò�-¨¸ÐÑGÔGÐGØ×Ò�) V°CÐÑ8Ô8Ð8ð 	×Ò�) V°!ÐÑ4Ô4Ð4Ø×Ò�) V°AÐÑ6Ô6Ð6ð 	×Ò�* f°UÐÑ;Ô;Ð;Ø×Ò�) V°AÐÑ6Ô6Ð6Ð6Ð6r@   c                 óÂ   — dd„}|                       t           |d¬¦  «        ¦  «        d¦  «         |                       t           |d	¬¦  «        ¦  «        d
¦  «         dS )ztest keylen==Nonerw   r{   r|   Nr   c                 ó(   — t          || |||¦  «        S r‘   rÏ   rØ   s        r>   r“   z.Pbkdf2Test.test_default_keylen.<locals>.helper  rÙ   r@   rÜ   rJ   r   ri   rÝ   )r0   rÌ   rß   s     r>   Útest_default_keylenzPbkdf2Test.test_default_keylen  sv   € ð	Eð 	Eð 	Eð 	Eà×Ò�˜V˜V¨6Ð2Ñ2Ô2Ñ3Ô3°RÑ8Ô8Ð8Ø×Ò�˜V˜V¨8Ð4Ñ4Ô4Ñ5Ô5°rÑ:Ô:Ð:Ð:Ð:r@   )rE   rp   rq   rr   ÚjoinrŸ   rs   r   rË   rŒ   rÕ   rœ   râ   rt   r@   r>   r¡   r¡     s†  € € € € € ØÐØLÈtÏyÊyÐYhÑOiÔOiÑiÐðI
ð �Ð5Ñ6Ô6ØÐ5°q¸"ððI
ð �Ð5Ñ6Ô6ØÐ5°q¸"ððI
ð* �ÐUÑVÔVØÐ5°q¸"ðð)I
ð6 �ÐUÑVÔVØÐ5°t¸Rðð5I
ðB �ÐUÑVÔVØÐ@À!ÀRððAI
ðN �ÐUÑVÔVØÐ9¸4ÀððMI
ðZ �ÐUÑVÔVØÐ:¸DÀ"ððYI
ðj �Ð=Ñ>Ô>Ø˜W a¨ððiI
ðt �Ð=Ñ>Ô>Ø˜W a¨ððsI
ð~ �Ð=Ñ>Ô>Ø˜W d¨Bðð}I
ðV �ÐGÑHÔHØ+Ø7Ø�bð	ðUI
ðd �Ð5Ñ6Ô6Ø 
¨D°"ððcI
ðt ˆrð !ñ "ô "ð Øˆrð !ñ "ô "ð �b˜(ð	ðsI
ðP �ð Vñ Wô Wà˜7 A r¨8ððOI
ð\ �ð Vñ Wô Wà˜W e¨R°ðð[I
ðh �ÐUÑVÔVØ˜W a¨¨XððgI
ðr �ÐUÑVÔVØ˜W a¨¨XððqI
ð| �ÐUÑVÔVØ˜W d¨B°ðð{I
ðF �ð %ñ &ô &à+Ð-TØ�b˜(ð	ðEI
ðT �ÐUÑVÔVØ�W˜d B¨ððSI
ð^ �ÐUÑVÔVØ˜S $¨¨Hðð]I
ðh �Ð5Ñ6Ô6Ø ¨d°B¸ððgI
ðr �ÐUÑVÔVØ˜W a¨¨XððqI
ð| �ÐUÑVÔVØ˜W a¨¨Xðð{I
ðF �ÐUÑVÔVØ˜W d¨B°ððEI
ðP �ð "ñ #ô #ð ,Ð-TØ�2�xððOI
ð` �Ð=Ñ>Ô>Ø˜W a¨¨Vðð_I
ðp �Ð5Ñ6Ô6Ø˜7 B¨¨FððoI
ðx �Ð=Ñ>Ô>Ø˜7 B¨¨fððwI
ð@ �ð &ñ 'ô 'à˜7 B¨¨EððI
ðJ �ð &ñ 'ô 'à˜7 B¨¨EððII
ÐðV.ð .ð .ð=ð =ð =ð87ð 7ð 7ð8;ð ;ð ;ð ;ð ;r@   r¡   )rr   Ú
__future__r   r   Úbinasciir   r   r*   Úpasslib.excr   rÑ   r   r   r	   Úpasslib.tests.utilsr
   r   r   r   r   rv   r)   rž   rŸ   r¡   rt   r@   r>   ú<module>rè      sU  ðØ .Ð .ð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð Ð Ð Ø €€€Ø €€€ð )Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð
l7ð l7ð l7ð l7ð l7�8ñ l7ô l7ð l7ðf79ð 79ð 79ð 79ð 79�(ñ 79ô 79ð 79ð| ?Ð >Ð >Ð >Ð >Ð >Ð >Ð >ðT;ð T;ð T;ð T;ð T;�ñ T;ô T;ð T;ð T;ð T;r@   