§
    HŠtj  ã                   óô   — d Z ddlmZmZ ddlmZ ddlZddlmZm	Z	m
Z
 ddlmZ ddlmZmZ g d¢Z G d	„ d
e¦  «        Zd„ Z e e¦   «         d¦  «         G d„ de¦  «        ¦   «         Z G d„ de¦  «        ZdS )z2passlib.tests -- unittests for passlib.crypto._md4é    )Úwith_statementÚdivision)ÚhexlifyN)Úbascii_to_strÚPY3Úu)Úlookup_hash)ÚTestCaseÚ
skipUnless)Ú_Common_MD4_TestÚMD4_Builtin_TestÚMD4_SSL_Testc                   ó>   — e Zd ZdZg d¢Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
r   z$common code for testing md4 backends))ó    Ú 31d6cfe0d16ae931b73c59d7e0c089c0)ó   aÚ bde52cb31de33e46245e05fbdbd6fb24)ó   abcÚ a448017aaf21d8525fc10ae87aa6729d)s   message digestÚ d9130a8164549fe818874806e1c7014b)s   abcdefghijklmnopqrstuvwxyzÚ d79e1c308aa5bbcdeea8ed63df412da9)s>   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789Ú 043f8582f241db351ce627e153e7f0e4)sP   12345678901234567890123456789012345678901234567890123456789012345678901234567890Ú e33b4ddc9c38f2199c3e7b164fcc0536c                 ó*   — t          d¦  «        j        S )zd
        get md4 constructor --
        overridden by subclasses to use alternate backends.
        Úmd4)r	   Úconst)Úselfs    úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/tests/test_crypto_builtin_md4.pyÚget_md4_constz_Common_MD4_Test.get_md4_const'   s   € õ
 ˜5Ñ!Ô!Ô'Ð'r   c                 óà   —  |                       ¦   «         ¦   «         }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         dS )zinformational attributesr   é   é@   N)r   ÚassertEqualÚnameÚdigest_sizeÚ
block_size)r   Úhs     r   Ú
test_attrsz_Common_MD4_Test.test_attrs.   si   € à ˆD×ÒÑ Ô Ñ"Ô"ˆØ×Ò˜œ Ñ'Ô'Ð'Ø×Ò˜œ¨Ñ+Ô+Ð+Ø×Ò˜œ rÑ*Ô*Ð*Ð*Ð*r   c                 ó  — |                       ¦   «         } |d¦  «        }|                      |                     ¦   «         d¦  «         |                     d¦  «         |                      |                     ¦   «         d¦  «         |                     d¦  «         |                      |                     ¦   «         d¦  «         t          rb |¦   «         }|                      t          |j        t          d¦  «        ¦  «         |                      |                     ¦   «         d¦  «         dS  |¦   «         }|                     t          d¦  «        ¦  «         |                      |                     ¦   «         d¦  «         dS )	zupdate() methodr   r   r   r   s   bcdefghijklmnopqrstuvwxyzr   ÚaN)r   r#   Ú	hexdigestÚupdater   ÚassertRaisesÚ	TypeErrorr   )r   r   r'   s      r   Útest_md4_updatez _Common_MD4_Test.test_md4_update5   sB  € à× Ò Ñ"Ô"ˆØˆC�‰HŒHˆØ×Ò˜Ÿš™œÐ(JÑKÔKÐKà	�Š�‰ŒˆØ×Ò˜Ÿš™œÐ(JÑKÔKÐKà	�ŠÐ-Ñ.Ô.Ð.Ø×Ò˜Ÿš™œÐ(JÑKÔKÐKåð 		Pà�‘”ˆAØ×Ò�i¨¬µ1°S±6´6Ñ:Ô:Ð:Ø×Ò˜QŸ[š[™]œ]Ð,NÑOÔOÐOÐOÐOð �‘”ˆAØ�HŠH•Q�s‘V”VÑÔÐØ×Ò˜QŸ[š[™]œ]Ð,NÑOÔOÐOÐOÐOr   c                 ó®   — |                       ¦   «         }| j        D ]8\  }} ||¦  «                             ¦   «         }|                      ||¦  «         Œ9dS )zhexdigest() methodN)r   Úvectorsr+   r#   ©r   r   ÚinputÚhexÚouts        r   Útest_md4_hexdigestz#_Common_MD4_Test.test_md4_hexdigestL   sd   € à× Ò Ñ"Ô"ˆØœ,ð 	'ð 	'‰JˆE�3Ø�#�e‘*”*×&Ò&Ñ(Ô(ˆCØ×Ò˜S #Ñ&Ô&Ð&Ð&ð	'ð 	'r   c                 óâ   — |                       ¦   «         }| j        D ]R\  }}t          t           ||¦  «                             ¦   «         ¦  «        ¦  «        }|                      ||¦  «         ŒSdS )zdigest() methodN)r   r1   r   r   Údigestr#   r2   s        r   Útest_md4_digestz _Common_MD4_Test.test_md4_digestS   st   € à× Ò Ñ"Ô"ˆØœ,ð 	'ð 	'‰JˆE�3Ý¥¨¨¨E©
¬
×(9Ò(9Ñ(;Ô(;Ñ <Ô <Ñ=Ô=ˆCØ×Ò˜S #Ñ&Ô&Ð&Ð&ð	'ð 	'r   c                 ó`  — |                       ¦   «         } |d¦  «        }|                     ¦   «         }|                     d¦  «         |                      |                     ¦   «         d¦  «         |                     d¦  «         |                      |                     ¦   «         d¦  «         dS )zcopy() methodr   s   defÚ 804e7f1c2586e50b49ac65db5b645131s   ghiÚ c5225580bfe176f6deeee33dee98732cN)r   Úcopyr,   r#   r+   )r   r   r'   Úh2s       r   Útest_md4_copyz_Common_MD4_Test.test_md4_copyZ   s•   € à× Ò Ñ"Ô"ˆØˆC�‰KŒKˆà�VŠV‰XŒXˆØ
�	Š	�&ÑÔÐØ×Ò˜Ÿš™œÐ)KÑLÔLÐLà	�Š�ÑÔÐØ×Ò˜Ÿš™œÐ(JÑKÔKÐKÐKÐKr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   r   r(   r/   r6   r9   r?   © r   r   r   r      s�   € € € € € Ø.Ð.ð
ð 
ð 
€Gð(ð (ð (ð+ð +ð +ðPð Pð Pð.'ð 'ð 'ð'ð 'ð 'ð
Lð 
Lð 
Lð 
Lð 
Lr   r   c                  óR   — 	 t          j        d¦  «         dS # t          $ r Y dS w xY w)z1
    check if hashlib natively supports md4.
    r   TF)ÚhashlibÚnewÚ
ValueErrorrD   r   r   Úhas_native_md4rI   k   s>   € ðÝŒ�EÑÔÐØˆtøÝð ð ð àˆuˆuðøøøs   ‚ ˜
&¥&zhashlib lacks ssl/md4 supportc                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )r   zhashlib.new('md4')c                 ó°   •— t          t          | ¦  «                             ¦   «          |                      |                      ¦   «         j        d¦  «         d S )NrF   )Úsuperr   ÚsetUpr#   r   rA   )r   Ú	__class__s    €r   rM   zMD4_SSL_Test.setUp~   sL   ø€ Ý�l˜DÑ!Ô!×'Ò'Ñ)Ô)Ð)ð 	×Ò˜×+Ò+Ñ-Ô-Ô8¸)ÑDÔDÐDÐDÐDr   ©r@   rA   rB   ÚdescriptionPrefixrM   Ú__classcell__©rN   s   @r   r   r   w   sG   ø€ € € € € à,Ðð
Eð Eð Eð Eð Eð Eð Eð Eð Er   r   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )r   zpasslib.crypto._md4.md4()c                 óŒ  •‡— t          t          | ¦  «                             ¦   «          t          ¦   «         r_t          j        Šˆfd„}|                      t          d|¦  «         t          j        ¦   «          |  	                    t          j        ¦  «         |  
                    |                      ¦   «         j        d¦  «         d S )Nc                 ó@   •— | dk    rt          d¦  «        ‚ ‰| g|¢R Ž S )Nr   zmd4 disabled for testing)rH   )r$   ÚargsÚorigs     €r   Úwrapperz'MD4_Builtin_Test.setUp.<locals>.wrapper�   s3   ø€ Ø˜5’=�=Ý$Ð%?Ñ@Ô@Ð@Ø�t˜DÐ( 4Ð(Ð(Ð(Ð(r   rG   zpasslib.crypto._md4)rL   r   rM   rI   rF   rG   Ú	patchAttrr	   Úclear_cacheÚ
addCleanupr#   r   rA   )r   rX   rW   rN   s     @€r   rM   zMD4_Builtin_Test.setUpˆ   s½   øø€ ÝÕ Ñ%Ô%×+Ò+Ñ-Ô-Ð-åÑÔð 	5õ ”;ˆDð)ð )ð )ð )ð )ð �NŠN�7 E¨7Ñ3Ô3Ð3õ Ô#Ñ%Ô%Ð%Ø�OŠO�KÔ3Ñ4Ô4Ð4ð 	×Ò˜×+Ò+Ñ-Ô-Ô8Ð:OÑPÔPÐPÐPÐPr   rO   rR   s   @r   r   r   …   sG   ø€ € € € € Ø3ÐðQð Qð Qð Qð Qð Qð Qð Qð Qr   r   )rC   Ú
__future__r   r   Úbinasciir   rF   Úpasslib.utils.compatr   r   r   Úpasslib.crypto.digestr	   Úpasslib.tests.utilsr
   r   Ú__all__r   rI   r   r   rD   r   r   ú<module>rb      sy  ðØ 8Ð 8ð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð Ð Ð Ø €€€ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø -Ð -Ð -Ð -Ð -Ð -Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð €ðLLð LLð LLð LLð LL�xñ LLô LLð LLðf	ð 	ð 	ð €ˆNˆNÑÔÐ=Ñ>Ô>ð
Eð 
Eð 
Eð 
Eð 
EÐ#ñ 
Eô 
Eñ ?Ô>ð
EðQð Qð Qð Qð QÐ'ñ Qô Qð Qð Qð Qr   