
    lg                         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    `/var/www/html/nourish/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HH(JKKK	(JKKK	-...(JKKK 		PAi1S66:::Q[[]],NOOOOO AHHQsVV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      "", 	' 	'JE3#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      "", 	' 	'JE3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KKVVXX
		&)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   uu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    lD!!''))) 	++--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==$%?@@@tD(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) ) ) ) ) NN7E7333 #%%%OOK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	 	 	 NN=>>
E 
E 
E 
E 
E# 
E 
E ?>
EQ Q Q Q Q' Q Q Q Q Qr   