§
    8·tc´&  ã                   óZ  — 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„ Z G d„ dej        ¦  «        Z G d	„ d
ej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Zdi fd„Zd„ ZdS )z*Self-testing for PyCryptodome hash modulesé    N)ÚhexlifyÚ	unhexlify)ÚbÚtobytes)Ústrxor_cc                 óf   — t          j        ddt          | ¦  «        ¦  «        }t          |¦  «        S )Ns   \s+ó    )ÚreÚsubr   r   )Ú
hex_stringÚshorters     úA/usr/lib/python3/dist-packages/Cryptodome/SelfTest/Hash/common.pyÚt2br   $   s+   € ÝŒf�W˜c¥7¨:Ñ#6Ô#6Ñ7Ô7€GÝ�WÑÔÐr	   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚHashDigestSizeSelfTestc                 ó|   — t           j                             | ¦  «         || _        || _        || _        || _        d S ©N)ÚunittestÚTestCaseÚ__init__ÚhashmodÚexpectedÚdescriptionÚextra_params)Úselfr   r   r   r   s        r   r   zHashDigestSizeSelfTest.__init__+   s=   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒØ ˆŒØ&ˆÔØ(ˆÔÐÐr	   c                 ó   — | j         S r   ©r   ©r   s    r   ÚshortDescriptionz'HashDigestSizeSelfTest.shortDescription2   ó   € ØÔÐr	   c                 óf  — d| j         vrM|                      t          | j        d¦  «        ¦  «         |                      | j        j        | j        ¦  «          | j        j        di | j         ¤Ž}|                      t          |d¦  «        ¦  «         |                      |j        | j        ¦  «         d S )NÚtruncateÚdigest_size© )r   Ú
failUnlessÚhasattrr   ÚassertEqualsr#   r   Únew©r   Úhs     r   ÚrunTestzHashDigestSizeSelfTest.runTest5   s¤   € Ø˜TÔ.Ð.Ð.Ø�OŠO�G D¤L°-Ñ@Ô@ÑAÔAÐAØ×Ò˜dœlÔ6¸¼ÑFÔFÐFØˆDŒLÔÐ1Ð1˜tÔ0Ð1Ð1ˆØ�Š�  =Ñ1Ô1Ñ2Ô2Ð2Ø×Ò˜!œ-¨¬Ñ7Ô7Ð7Ð7Ð7r	   N©Ú__name__Ú
__module__Ú__qualname__r   r   r+   r$   r	   r   r   r   )   sA   € € € € € ð)ð )ð )ð ð  ð  ð8ð 8ð 8ð 8ð 8r	   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚHashSelfTestc                 ó®   — t           j                             | ¦  «         || _        |                     ¦   «         | _        || _        || _        || _        d S r   )	r   r   r   r   Úlowerr   Úinputr   r   )r   r   r   r   r4   r   s         r   r   zHashSelfTest.__init__@   sN   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒØ ŸšÑ(Ô(ˆŒØˆŒ
Ø&ˆÔØ(ˆÔÐÐr	   c                 ó   — | j         S r   r   r   s    r   r   zHashSelfTest.shortDescriptionH   r    r	   c                 ób  —  | j         j        di | j        ¤Ž}|                     | j        ¦  «         t          j        |                     ¦   «         ¦  «        }|                     ¦   «         } | j         j        | j        fi | j        ¤Ž}|                     ¦   «         }t          j        |                     ¦   «         ¦  «        }|  	                    | j
        |¦  «         t          j        d         dk    r7|  	                    | j
        |¦  «         |  	                    | j
        |¦  «         nZ|  	                    | j
                             ¦   «         |¦  «         |  	                    | j
                             ¦   «         |¦  «         |  	                    | j
        |¦  «         | j         j        dvst          |d¦  «        rq|                     ¦   «         }|                     | j        ¦  «         t          j        |                     ¦   «         ¦  «        }|  	                    | j
        |¦  «         d S d S )Nr   é   )zCryptodome.Hash.MD5zCryptodome.Hash.SHA1r(   r$   )r   r(   r   Úupdater4   ÚbinasciiÚb2a_hexÚdigestÚ	hexdigestÚassertEqualr   ÚsysÚversion_infoÚdecoder-   r&   )r   r*   Úout1Úout2Úout3Úout4Úh2Úout5s           r   r+   zHashSelfTest.runTestK   sã  € ØˆDŒLÔÐ1Ð1˜tÔ0Ð1Ð1ˆØ	�Š�”ÑÔÐåÔ §¢¡
¤
Ñ+Ô+ˆØ�{Š{‰}Œ}ˆàˆDŒLÔ˜TœZÐ=Ð=¨4Ô+<Ð=Ð=ˆà�{Š{‰}Œ}ˆÝÔ §¢¡
¤
Ñ+Ô+ˆð 	×Ò˜œ¨Ñ-Ô-Ð-ÝÔ˜AÔ !Ò#Ð#Ø×Ò˜Tœ]¨DÑ1Ô1Ð1Ø×Ò˜Tœ]¨DÑ1Ô1Ð1Ð1à×Ò˜Tœ]×1Ò1Ñ3Ô3°TÑ:Ô:Ð:Ø×Ò˜Tœ]×1Ò1Ñ3Ô3°TÑ:Ô:Ð:Ø×Ò˜œ¨Ñ-Ô-Ð-ð
 Œ<Ô Ð(WÐWÐWÕ[bÐcdÐfkÑ[lÔ[lÐWØ—’‘”ˆBØ�IŠI�d”jÑ!Ô!Ð!ÝÔ# B§I¢I¡K¤KÑ0Ô0ˆDØ×Ò˜Tœ]¨DÑ1Ô1Ð1Ð1Ð1ð	 XÐWr	   Nr,   r$   r	   r   r1   r1   >   sA   € € € € € ð)ð )ð )ð ð  ð  ð2ð 2ð 2ð 2ð 2r	   r1   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚHashTestOIDc                 ón   — t           j                             | ¦  «         || _        || _        || _        d S r   )r   r   r   r   Úoidr   )r   r   rJ   r   s       r   r   zHashTestOID.__init__l   s5   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒØˆŒØ(ˆÔÐÐr	   c                 ót   —  | j         j        di | j        ¤Ž}|                      |j        | j        ¦  «         d S )Nr$   )r   r(   r   r=   rJ   r)   s     r   r+   zHashTestOID.runTestr   s?   € ØˆDŒLÔÐ1Ð1˜tÔ0Ð1Ð1ˆØ×Ò˜œ ¤Ñ)Ô)Ð)Ð)Ð)r	   N©r-   r.   r/   r   r+   r$   r	   r   rH   rH   k   s2   € € € € € ð)ð )ð )ð*ð *ð *ð *ð *r	   rH   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚByteArrayTestc                 ó`   — t           j                             | ¦  «         || _        || _        d S r   ©r   r   r   Úmoduler   ©r   rQ   r   s      r   r   zByteArrayTest.__init__y   ó.   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒØ(ˆÔÐÐr	   c                 ót  — 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   Ú	bytearrayrQ   r(   r   r=   r;   r8   )r   ÚdataÚbaÚh1rE   s        r   r+   zByteArrayTest.runTest~   s'  € Ý�Ñ Ô ˆõ �t‰_Œ_ˆàˆTŒ[Œ_˜TÐ7Ð7 TÔ%6Ð7Ð7ˆØˆTŒ[Œ_˜RÐ5Ð5 4Ô#4Ð5Ð5ˆØˆˆ2ˆAˆ2‰Ø×Ò˜Ÿš™œ b§i¢i¡k¤kÑ2Ô2Ð2õ �t‰_Œ_ˆàˆTŒ[Œ_Ð1Ð1˜tÔ0Ð1Ð1ˆØˆTŒ[Œ_Ð1Ð1˜tÔ0Ð1Ð1ˆà
�	Š	�$‰ŒˆØ
�	Š	�"‰Œˆàˆˆ2ˆAˆ2‰Ø×Ò˜Ÿš™œ b§i¢i¡k¤kÑ2Ô2Ð2Ð2Ð2r	   NrL   r$   r	   r   rN   rN   w   s2   € € € € € ð)ð )ð )ð
3ð 3ð 3ð 3ð 3r	   rN   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚMemoryViewTestc                 ó`   — t           j                             | ¦  «         || _        || _        d S r   rP   rR   s      r   r   zMemoryViewTest.__init__˜   rS   r	   c                 ó„  — d}d„ }d„ }||fD �]1} ||¦  «        } | j         j        |fi | j        ¤Ž} | j         j        |fi | j        ¤Ž}|j        sd|d d…<   |                      |                     ¦   «         |                     ¦   «         ¦  «          ||¦  «        } | j         j        di | j        ¤Ž} | j         j        di | j        ¤Ž}|                     |¦  «         |                     |¦  «         |j        sd|d d…<   |                      |                     ¦   «         |                     ¦   «         ¦  «         �Œ3d S )Ns    c                 ó    — t          | ¦  «        S r   )Ú
memoryview©rX   s    r   Ú	get_mv_roz)MemoryViewTest.runTest.<locals>.get_mv_ro¡   s   € Ý˜dÑ#Ô#Ð#r	   c                 ó:   — t          t          | ¦  «        ¦  «        S r   )r`   rW   ra   s    r   Ú	get_mv_rwz)MemoryViewTest.runTest.<locals>.get_mv_rw¤   s   € Ý�i¨™oœoÑ.Ô.Ð.r	   rU   rV   r$   )rQ   r(   r   Úreadonlyr=   r;   r8   )r   rX   rb   rd   Úget_mvÚmvrZ   rE   s           r   r+   zMemoryViewTest.runTest�   sr  € àˆð	$ð 	$ð 	$ð	/ð 	/ð 	/ð   Ð*ð 	7ñ 	7ˆFð �˜‘”ˆBà �”” Ð;Ð;¨Ô):Ð;Ð;ˆBØ �”” Ð9Ð9 tÔ'8Ð9Ð9ˆBØ”;ð !Ø ��2�A�2‘Ø×Ò˜RŸYšY™[œ[¨"¯)ª)©+¬+Ñ6Ô6Ð6ð �˜‘”ˆBà �””Ð5Ð5 4Ô#4Ð5Ð5ˆBØ �””Ð5Ð5 4Ô#4Ð5Ð5ˆBØ�IŠI�d‰OŒOˆOØ�IŠI�b‰MŒMˆMØ”;ð !Ø ��2�A�2‘Ø×Ò˜RŸYšY™[œ[¨"¯)ª)©+¬+Ñ6Ô6Ð6Ñ6ð)	7ð 	7r	   NrL   r$   r	   r   r\   r\   –   s2   € € € € € ð)ð )ð )ð
7ð 7ð 7ð 7ð 7r	   r\   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚMACSelfTestc                 óæ   — t           j                             | ¦  «         || _        t	          |¦  «        | _        t	          |¦  «        | _        t	          |¦  «        | _        || _        || _	        d S r   )
r   r   r   rQ   r   ÚresultrX   ÚkeyÚparamsr   )r   rQ   r   rk   rX   rl   rm   s          r   r   zMACSelfTest.__init__À   s\   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒÝ˜&‘k”kˆŒÝ˜‘I”IˆŒ	Ý�s‘8”8ˆŒØˆŒØ&ˆÔÐÐr	   c                 ó   — | j         S r   r   r   s    r   r   zMACSelfTest.shortDescriptionÉ   r    r	   c                 ó|  — 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¦  «        |                     ¦   «         ¦  «         	  | j        j        | j        | j        fi | j        ¤Ž}|                     ¦   «         }|                     ¦   «         }|                     d¦  «         |                      | 	                    ¦   «         | j        ¦  «         |                     d¦  «         |                      | 	                    ¦   «         | 	                    ¦   «         ¦  «         n# t$          $ r Y nw xY w|                      t)          | 	                    ¦   «         t+          d¦  «        ¦  «        ¦  «         |                      t)          |                     ¦   «         t+          d¦  «        ¦  «        ¦  «         |                     |                     ¦   «         ¦  «         |                     |                     ¦   «                              d¦  «        ¦  «         d S )NÚasciiéÿ   Ú4556s   blar	   Ú )r   rk   rQ   r(   rl   rm   r8   rX   r=   r;   r@   r<   ÚverifyÚ	hexverifyr   ÚassertRaisesÚ
ValueErrorÚcopyÚNotImplementedErrorÚ
assertTrueÚ
isinstanceÚtypeÚencode)r   Ú
result_hexr*   Ú	wrong_macrE   Úh3s         r   r+   zMACSelfTest.runTestÌ   sù  € å˜Tœ[Ñ)Ô)ˆ
ð ˆDŒKŒO˜DœHÐ4Ð4¨¬Ð4Ð4ˆØ	�Š�”ÑÔÐØ×Ò˜œ a§h¢h¡j¤jÑ1Ô1Ð1Ø×Ò� ¤Ñ-Ô-×4Ò4°WÑ=Ô=¸q¿{º{¹}¼}ÑMÔMÐMð 	
�Š�”ÑÔÐØ	�Š�JÑÔÐõ ˜Tœ[¨#Ñ.Ô.ˆ	Ø×Ò�* a¤h°	Ñ:Ô:Ð:Ø×Ò�* a¤k°6Ñ:Ô:Ð:ð ˆDŒKŒO˜DœH d¤iÐ?Ð?°4´;Ð?Ð?ˆØ×Ò˜œ a§h¢h¡j¤jÑ1Ô1Ð1Ø×Ò� ¤Ñ-Ô-×4Ò4°WÑ=Ô=¸q¿{º{¹}¼}ÑMÔMÐMð	Ø�”” ¤¨$¬)ÐCÐC°t´{ÐCÐCˆAØ—’‘”ˆBØ—’‘”ˆBð �IŠI�fÑÔÐØ×Ò˜RŸYšY™[œ[¨$¬+Ñ6Ô6Ð6ð �HŠH�VÑÔÐØ×Ò˜QŸXšX™ZœZ¨¯ª©¬Ñ5Ô5Ð5Ð5øÝ"ð 	ð 	ð 	ØˆDð	øøøð 	�Š�
 1§8¢8¡:¤:­t°C©y¬yÑ9Ô9Ñ:Ô:Ð:Ø�Š�
 1§;¢;¡=¤=µ$°r±(´(Ñ;Ô;Ñ<Ô<Ð<ð 	
�Š�A—K’K‘M”MÑ"Ô"Ð"Ø	�Š�A—K’K‘M”M×(Ò(¨Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2s   Ç*CK Ë
KËKNr,   r$   r	   r   ri   ri   ¾   sA   € € € € € ð'ð 'ð 'ð ð  ð  ð.3ð .3ð .3ð .3ð .3r	   ri   c           
      ó   — g }t          t          |¦  «        ¦  «        D ]†}||         }t          t          |dd…         ¦  «        \  }	}
t          |¦  «        dk     rt	          |
¦  «        }n|d         }d||dz   |fz  }|                     t          | ||	|
|¦  «        ¦  «         Œ‡d|t          |¦  «        dz   fz  }|                     t          | |||¦  «        ¦  «         |�$|                     t          | ||¦  «        ¦  «         |                     t          | |¦  «        ¦  «         |                     t          | |¦  «        ¦  «         |S )Nr   r7   é   ú
%s #%d: %srV   z%s #%d: digest_size)ÚrangeÚlenÚmapr   ÚreprÚappendr1   r   rH   rN   r\   )rQ   Úmodule_nameÚ	test_datar#   rJ   r   ÚtestsÚiÚrowr   r4   r   Únames                r   Úmake_hash_testsr�   ý   sE  € à€EÝ•3�y‘>”>Ñ"Ô"ð Pð PˆØ˜ŒlˆÝ¥¨¨A¨a¨C¬Ñ1Ô1Ñˆ�5Ýˆs‰8Œ8�aŠ<ˆ<Ý˜u™+œ+ˆKˆKà˜aœ&ˆKØ˜{¨A¨a©C°Ð=Ñ=ˆØ�Š•\ &¨$°¸%ÀÑNÔNÑOÔOÐOÐOà  Kµ°Y±´À!Ñ1CÐ#DÑD€DØ	‡L‚LÕ'¨°°kÀ<ÑPÔPÑQÔQÐQà
€Ø�Š•[ ¨¨lÑ;Ô;Ñ<Ô<Ð<à	‡L‚L•˜v |Ñ4Ô4Ñ5Ô5Ð5à	‡L‚L• ¨Ñ5Ô5Ñ6Ô6Ð6à€Lr	   c                 ó  — g }t          |¦  «        D ]l\  }}t          |¦  «        dk    rt          |¦  «        i gz   \  }}}}	}
n|\  }}}}	}
d||dz   |	fz  }|                     t	          | |||||
¦  «        ¦  «         Œm|S )Né   rƒ   rV   )Ú	enumerater…   Úlistrˆ   ri   )rQ   r‰   rŠ   r‹   rŒ   r�   rl   rX   Úresultsr   rm   rŽ   s               r   Úmake_mac_testsr•     s£   € Ø€EÝ˜IÑ&Ô&ð Lð L‰ˆˆ3Ýˆs‰8Œ8�qŠ=ˆ=Ý8<¸S¹	¼	ÀbÀFÑ8JÑ5ˆS�$˜ ¨f¨fà8;Ñ5ˆS�$˜ ¨fØ˜{¨A¨a©C°Ð=Ñ=ˆØ�Š•[ ¨¨w¸¸cÀ6ÑJÔJÑKÔKÐKÐKØ€Lr	   )Ú__doc__r
   r>   r   r9   ÚCryptodome.HashÚ
Cryptodomer   r   ÚCryptodome.Util.py3compatr   r   ÚCryptodome.Util.strxorr   r   r   r   r1   rH   rN   r\   ri   r�   r•   r$   r	   r   ú<module>r›      sÖ  ðð2 1Ð 0à 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð
8ð 8ð 8ð 8ð 8˜XÔ.ñ 8ô 8ð 8ð**2ð *2ð *2ð *2ð *2�8Ô$ñ *2ô *2ð *2ðZ	*ð 	*ð 	*ð 	*ð 	*�(Ô#ñ 	*ô 	*ð 	*ð3ð 3ð 3ð 3ð 3�HÔ%ñ 3ô 3ð 3ð>%7ð %7ð %7ð %7ð %7�XÔ&ñ %7ô %7ð %7ðP<3ð <3ð <3ð <3ð <3�(Ô#ñ <3ô <3ð <3ð~ FJØ!#ðð ð ð ð4	ð 	ð 	ð 	ð 	r	   