o
    5Îh–&  ã                   @   sæ   d Z ddlZddlZddlZddlZddlZddlmZmZ ddl	m
Z
mZ ddlmZ dd„ ZG dd	„ d	ejƒZG d
d„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZdi fdd„Zdd„ ZdS )z&Self-testing for PyCrypto hash modulesé    N)ÚhexlifyÚ	unhexlify)ÚbÚtobytes)Ústrxor_cc                 C   s   t  ddt| ƒ¡}t|ƒS )Ns   \s+ó    )ÚreÚsubr   r   )Ú
hex_stringÚshorter© r   úo/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/Crypto/SelfTest/Hash/common.pyÚt2b$   s   r   c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚHashDigestSizeSelfTestc                 C   s(   t j | ¡ || _|| _|| _|| _d S ©N)ÚunittestÚTestCaseÚ__init__ÚhashmodÚexpectedÚdescriptionÚextra_params)Úselfr   r   r   r   r   r   r   r   +   s
   
zHashDigestSizeSelfTest.__init__c                 C   ó   | j S r   ©r   ©r   r   r   r   ÚshortDescription2   ó   z'HashDigestSizeSelfTest.shortDescriptionc                 C   sf   d| j vr|  t| jdƒ¡ |  | jj| j¡ | jjdi | j ¤Ž}|  t|dƒ¡ |  |j| j¡ d S )NÚtruncateÚdigest_sizer   )r   Ú
assertTrueÚhasattrr   ÚassertEqualr    r   Únew©r   Úhr   r   r   ÚrunTest5   s   
zHashDigestSizeSelfTest.runTestN©Ú__name__Ú
__module__Ú__qualname__r   r   r'   r   r   r   r   r   )   s    r   c                   @   r   )ÚHashSelfTestc                 C   s2   t j | ¡ || _| ¡ | _|| _|| _|| _d S r   )	r   r   r   r   Úlowerr   Úinputr   r   )r   r   r   r   r.   r   r   r   r   r   @   s   

zHashSelfTest.__init__c                 C   r   r   r   r   r   r   r   r   H   r   zHashSelfTest.shortDescriptionc                 C   s  | j jdi | j¤Ž}| | j¡ t | ¡ ¡}| ¡ }| j j| jfi | j¤Ž}| ¡ }t | ¡ ¡}|  	| j
|¡ tjd dkrO|  	| j
|¡ |  	| j
|¡ n|  	| j
 ¡ |¡ |  	| j
 ¡ |¡ |  	| j
|¡ | j jdvsst|dƒr| ¡ }| | j¡ t | ¡ ¡}|  	| j
|¡ d S d S )Nr   é   )zCrypto.Hash.MD5zCrypto.Hash.SHA1r$   r   )r   r$   r   Úupdater.   ÚbinasciiÚb2a_hexÚdigestÚ	hexdigestr#   r   ÚsysÚversion_infoÚdecoder)   r"   )r   r&   Úout1Úout2Úout3Úout4Úh2Úout5r   r   r   r'   K   s(   üzHashSelfTest.runTestNr(   r   r   r   r   r,   >   s    r,   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚHashTestOIDc                 C   s"   t j | ¡ || _|| _|| _d S r   )r   r   r   r   Úoidr   )r   r   r@   r   r   r   r   r   l   s   
zHashTestOID.__init__c                 C   s(   | j jdi | j¤Ž}|  |j| j¡ d S )Nr   )r   r$   r   r#   r@   r%   r   r   r   r'   r   s   zHashTestOID.runTestN©r)   r*   r+   r   r'   r   r   r   r   r?   k   s    r?   c                   @   r>   )ÚByteArrayTestc                 C   ó   t j | ¡ || _|| _d S r   ©r   r   r   Úmoduler   ©r   rE   r   r   r   r   r   y   ó   
zByteArrayTest.__init__c                 C   sÄ   t dƒ}t|ƒ}| jj|fi | j¤Ž}| jj|fi | j¤Ž}d|d d…< |  | ¡ | ¡ ¡ t|ƒ}| jjdi | j¤Ž}| jjdi | j¤Ž}| |¡ | |¡ d|d d…< |  | ¡ | ¡ ¡ d S )Nz ó   ÿé   r   )r   Ú	bytearrayrE   r$   r   r#   r3   r0   )r   ÚdataÚbaÚh1r<   r   r   r   r'   ~   s   

zByteArrayTest.runTestNrA   r   r   r   r   rB   w   ó    rB   c                   @   r>   )ÚMemoryViewTestc                 C   rC   r   rD   rF   r   r   r   r   ˜   rG   zMemoryViewTest.__init__c                 C   sê   d}dd„ }dd„ }||fD ]d}||ƒ}| j j|fi | j¤Ž}| j j|fi | j¤Ž}|js3d|d d…< |  | ¡ | ¡ ¡ ||ƒ}| j jdi | j¤Ž}| j jdi | j¤Ž}| |¡ | |¡ |jshd|d d…< |  | ¡ | ¡ ¡ qd S )	Ns    c                 S   s   t | ƒS r   )Ú
memoryview©rK   r   r   r   Ú	get_mv_ro¡   s   z)MemoryViewTest.runTest.<locals>.get_mv_roc                 S   s   t t| ƒƒS r   )rP   rJ   rQ   r   r   r   Ú	get_mv_rw¤   s   z)MemoryViewTest.runTest.<locals>.get_mv_rwrH   rI   r   )rE   r$   r   Úreadonlyr#   r3   r0   )r   rK   rR   rS   Úget_mvÚmvrM   r<   r   r   r   r'      s&   

ìzMemoryViewTest.runTestNrA   r   r   r   r   rO   –   rN   rO   c                   @   r   )ÚMACSelfTestc                 C   s@   t j | ¡ || _t|ƒ| _t|ƒ| _t|ƒ| _|| _|| _	d S r   )
r   r   r   rE   r   ÚresultrK   ÚkeyÚparamsr   )r   rE   r   rX   rK   rY   rZ   r   r   r   r   À   s   



zMACSelfTest.__init__c                 C   r   r   r   r   r   r   r   r   É   r   zMACSelfTest.shortDescriptionc                 C   s¼  t | jƒ}| jj| jfi | j¤Ž}| | j¡ |  | j| 	¡ ¡ |  t | jƒ 
d¡| ¡ ¡ | | j¡ | |¡ t| jdƒ}|  t|j|¡ |  t|jd¡ | jj| j| jfi | j¤Ž}|  | j| 	¡ ¡ |  t | jƒ 
d¡| ¡ ¡ z5| jj| j| jfi | j¤Ž}| ¡ }| ¡ }| d¡ |  | 	¡ | j¡ | d¡ |  | 	¡ | 	¡ ¡ W n	 ty²   Y nw |  t| 	¡ tdƒƒ¡ |  t| ¡ tdƒƒ¡ | | ¡ ¡ | | ¡  d¡¡ d S )NÚasciiéÿ   Ú4556s   blar   Ú )r   rX   rE   r$   rY   rZ   r0   rK   r#   r3   r7   r4   ÚverifyÚ	hexverifyr   ÚassertRaisesÚ
ValueErrorÚcopyÚNotImplementedErrorr!   Ú
isinstanceÚtypeÚencode)r   Ú
result_hexr&   Ú	wrong_macr<   Úh3r   r   r   r'   Ì   s8   



ÿzMACSelfTest.runTestNr(   r   r   r   r   rW   ¾   s    	rW   c              	   C   sà   g }t t|ƒƒD ]4}|| }tt|dd… ƒ\}	}
t|ƒdk r$t|
ƒ}n|d }d||d |f }| t| ||	|
|ƒ¡ qd|t|ƒd f }| t| |||ƒ¡ |d ur^| t| ||ƒ¡ | t	| |ƒ¡ | t
| |ƒ¡ |S )Nr   r/   é   ú
%s #%d: %srI   z%s #%d: digest_size)ÚrangeÚlenÚmapr   ÚreprÚappendr,   r   r?   rB   rO   )rE   Úmodule_nameÚ	test_datar    r@   r   ÚtestsÚiÚrowr   r.   r   Únamer   r   r   Úmake_hash_testsý   s    
rx   c              
   C   sx   g }t |ƒD ]3\}}t|ƒdkrt|ƒi g \}}}}	}
n|\}}}}	}
d||d |	f }| t| |||||
ƒ¡ q|S )Né   rl   rI   )Ú	enumeratern   Úlistrq   rW   )rE   rr   rs   rt   ru   rv   rY   rK   Úresultsr   rZ   rw   r   r   r   Úmake_mac_tests  s   r}   )Ú__doc__r   r5   r   r1   ÚCrypto.HashÚCryptor   r   ÚCrypto.Util.py3compatr   r   ÚCrypto.Util.strxorr   r   r   r   r,   r?   rB   rO   rW   rx   r}   r   r   r   r   Ú<module>   s(   -(?
ÿ