o
    ]¨Êh¤  ã                   @   sž   d Z dZddlZddlZddlZddlT ejdk rdd„ Zne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dd„Zdd„ ZdS )z&Self-testing for PyCrypto hash modulesz$Id$é    N)Ú*i  c                  K   s   |   ¡ S ©N)Úcopy)Úkwargs© r   úM/var/www/html/env/lib/python3.10/site-packages/Crypto/SelfTest/Hash/common.pyÚdict&   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 r   )ÚunittestÚTestCaseÚ__init__ÚhashmodÚexpectedÚdescription)Úselfr   r   r   r   r   r   r   .   s   
zHashDigestSizeSelfTest.__init__c                 C   ó   | j S r   ©r   ©r   r   r   r   ÚshortDescription4   ó   z'HashDigestSizeSelfTest.shortDescriptionc                 C   sR   |   t| jdƒ¡ |  | jj| j¡ | j ¡ }|   t|dƒ¡ |  |j| j¡ d S )NÚdigest_size)Ú
assertTrueÚhasattrr   ÚassertEqualr   r   Únew)r   Úhr   r   r   ÚrunTest7   s
   
zHashDigestSizeSelfTest.runTestN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r
   ,   s    r
   c                   @   r	   )ÚHashSelfTestc                 C   s(   t j | ¡ || _|| _|| _|| _d S r   )r   r   r   r   r   Úinputr   )r   r   r   r   r#   r   r   r   r   A   s
   
zHashSelfTest.__init__c                 C   r   r   r   r   r   r   r   r   H   r   zHashSelfTest.shortDescriptionc                 C   sð   | j  ¡ }| | j¡ t | ¡ ¡}| ¡ }| j  | j¡}| ¡ }t | ¡ ¡}|  | j	|¡ t
jd dkrE|  | j	|¡ |  | j	|¡ n|  | j	 ¡ |¡ |  | j	 ¡ |¡ |  | j	|¡ | ¡ }| | j¡ t | ¡ ¡}|  | j	|¡ d S )Nr   é   )r   r   Úupdater#   ÚbinasciiÚb2a_hexÚdigestÚ	hexdigestr   r   ÚsysÚversion_infoÚdecode)r   r   Úout1Úout2Úout3Úout4Úh2Úout5r   r   r   r   K   s$   
zHashSelfTest.runTestNr   r   r   r   r   r"   ?   s    r"   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚHashTestOIDc                 C   s   t j | ¡ || _|| _d S r   )r   r   r   r   Úoid)r   r   r4   r   r   r   r   h   s   
zHashTestOID.__init__c                 C   s^   | j  ¡ }| jd kr%zd}|j}W n ty   d}Y nw |  |d¡ d S |  |j| j¡ d S )Nr   é   )r   r   r4   ÚAttributeErrorr   )r   r   ÚraisedÚar   r   r   r   m   s   


ÿzHashTestOID.runTestN)r   r    r!   r   r   r   r   r   r   r3   g   s    r3   c                   @   r	   )ÚMACSelfTestc                 C   s4   t j | ¡ || _|| _|| _|| _|| _|| _d S r   )	r   r   r   r   Úexpected_dictr#   ÚkeyÚhashmodsr   )r   r   r   r:   r#   r;   r<   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 ¡ ƒD ]–}| j| }t t| jƒ¡}t t| jƒ¡}td 	| j|  
¡ ¡ƒ}| jj||d�}| |¡ t | ¡ ¡}| ¡ }| j |||¡}| ¡ }	t | ¡ ¡}
| ¡ }| tdƒ¡ t | ¡ ¡}|  ||¡ tjd dkr�|  ||¡ |  ||	¡ n|  | ¡ |¡ |  | ¡ |	¡ |  ||
¡ |  ||¡ qd S )NÚ )Ú	digestmodzblah blah blahr   r$   )Úlistr:   Úkeysr<   r&   Úa2b_hexÚbr;   r#   ÚjoinÚsplitr   r   r%   r'   r(   r)   r   r   r*   r+   r,   )r   Úhashnamer   r;   Údatar   r   r-   r.   r/   r0   r1   r2   r   r   r   r   ‡   s0   

àzMACSelfTest.runTestNr   r   r   r   r   r9   y   s    	r9   c                 C   sÈ   g }t t|ƒƒD ]8}|| }ttt|dd… ƒƒ\}}	t|ƒdk r&t|	ƒ}
n|d  d¡}
d||d |
f }| t| |||	ƒ¡ q|d urIt|ƒ}d||d f }| t	| ||ƒ¡ | t
| |ƒ¡ |S )Nr   r$   é   zlatin-1ú
%s #%d: %sr5   z%s #%d: digest_size)ÚrangeÚlenr?   ÚmaprB   ÚreprÚencodeÚappendr"   r
   r3   )ÚmoduleÚmodule_nameÚ	test_datar   r4   ÚtestsÚiÚrowr   r#   r   Únamer   r   r   Úmake_hash_testsª   s   
rV   c              
   C   sX   g }t t|ƒƒD ]!}|| }|\}}}	}
d||d |
f }| t| ||	|||ƒ¡ q|S )NrH   r5   )rI   rJ   rN   r9   )rO   rP   rQ   r<   rR   rS   rT   r;   rF   Úresultsr   rU   r   r   r   Úmake_mac_tests¼   s   rX   r   )Ú__doc__Ú__revision__r*   r   r&   ÚCrypto.Util.py3compatÚ
hexversionr   r   r
   r"   r3   r9   rV   rX   r   r   r   r   Ú<module>   s   

(
1