§
    8·tcüC  ã                   ó¨  — d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	  G d„ d¦  «        Z
e
fd„Z G d	„ d
ej        ¦  «        Z G d„ de¦  «        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 e¦   «         fd„Zd„ ZdS )z*Self-testing for PyCryptodome hash modulesé    N)Úa2b_hexÚb2a_hexÚhexlify)Úb)Ústrxor_cc                   ó   — e Zd ZdS )Ú
_NoDefaultN)Ú__name__Ú
__module__Ú__qualname__© ó    úC/usr/lib/python3/dist-packages/Cryptodome/SelfTest/Cipher/common.pyr	   r	   !   s   € € € € € € € r   r	   c                 óX   — 	 | |         }n# t           $ r |t          u r‚ |cY S w xY w| |= |S )zAGet an item from a dictionary, and remove it from the dictionary.)ÚKeyErrorr	   )ÚdÚkÚdefaultÚretvals       r   Ú_extractr   "   sR   € ðØ�1”ˆˆøÝð ð ð Ø•jÐ Ð ØØˆˆˆðøøøð 	
ˆ!ˆØ€Ms   ‚ ‹$£$c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚCipherSelfTestc                 óì  — t           j                             | ¦  «         || _        |                     ¦   «         }t          |d¦  «        | _        t          t          |d¦  «        ¦  «        | _        t          t          |d¦  «        ¦  «        | _	        t          t          |d¦  «        ¦  «        | _
        t          |dd ¦  «        | _        t          |dd ¦  «        | _        t          |dd ¦  «        | _        | j        rt          | j        ¦  «        | _        t          |dd ¦  «        }t          |¦  «        | _        |�qt!          | j        d	|z   ¦  «        | _        t          |d
d ¦  «        | _        | j        €t          |dd ¦  «        | _        | j        �t          | j        ¦  «        | _        n=d | _        t          |d
d ¦  «        | _        | j        �t          | j        ¦  «        | _        || _        d S ©NÚdescriptionÚkeyÚ	plaintextÚ
ciphertextÚmodule_nameÚ
assoc_dataÚmacÚmodeÚMODE_ÚivÚnonce©ÚunittestÚTestCaseÚ__init__ÚmoduleÚcopyr   r   r   r   r   r   r   r    r!   ÚstrÚ	mode_nameÚgetattrr"   r$   Úextra_params©Úselfr*   Úparamsr"   s       r   r)   zCipherSelfTest.__init__0   s   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒð —’‘”ˆÝ# F¨MÑ:Ô:ˆÔÝ•X˜f eÑ,Ô,Ñ-Ô-ˆŒÝ�8 F¨KÑ8Ô8Ñ9Ô9ˆŒÝ�H V¨\Ñ:Ô:Ñ;Ô;ˆŒÝ# F¨M¸4Ñ@Ô@ˆÔÝ" 6¨<¸Ñ>Ô>ˆŒÝ˜F E¨4Ñ0Ô0ˆŒØŒ?ð 	#Ý˜œ‘{”{ˆDŒHå˜ ¨Ñ-Ô-ˆÝ˜T™œˆŒàÐå ¤¨W°t©^Ñ<Ô<ˆDŒIå˜v t¨TÑ2Ô2ˆDŒGØŒwˆÝ" 6¨7°DÑ9Ô9�”ØŒwÐ"Ý˜DœG™*œ*�”øð ˆDŒIÝ˜v t¨TÑ2Ô2ˆDŒGØŒwÐ"Ý˜DœG™*œ*�”à"ˆÔÐÐr   c                 ó   — | j         S ©N)r   ©r1   s    r   ÚshortDescriptionzCipherSelfTest.shortDescriptionV   s   € ØÔÐr   c                 óè   — | j                              ¦   «         }t          | j        ¦  «        }g }| j        �| j        g}| j        �|t          | j        ¦  «        gz  } | j        j        |g|¢R i |¤ŽS r4   ©r/   r+   r   r   r"   r$   r*   Únew©r1   r2   r   Ú	old_styles       r   Ú_newzCipherSelfTest._newY   ó~   € ØÔ"×'Ò'Ñ)Ô)ˆÝ�d”hÑÔˆàˆ	ØŒ9Ð Øœ)˜ˆIØŒ7ÐØ�7 4¤7Ñ+Ô+Ð-Ñ-ˆIàˆtŒ{Œ˜sÐ9 YÐ9Ð9Ð9°&Ð9Ð9Ð9r   c                 óx   — t          | j        d|z   ¦  «        sdS | j        t          | j        d|z   ¦  «        k    S )Nr#   F)Úhasattrr*   r"   r.   )r1   Únames     r   ÚisModezCipherSelfTest.isModee   s<   € Ý�t”{ G¨D¡LÑ1Ô1ð 	Ø�5ØŒy�G D¤K°¸±Ñ>Ô>Ò>Ð>r   c                 ó”  — t          | j        ¦  «        }t          | j        ¦  «        }g }| j        rd„ | j        D ¦   «         }d }d }t	          d¦  «        D ]Ï}|                      ¦   «         }|                      ¦   «         }|D ],}	|                     |	¦  «         |                     |	¦  «         Œ-t          |                     |¦  «        ¦  «        }
t          | 	                    |¦  «        ¦  «        }|r,|  
                    ||
¦  «         |  
                    ||¦  «         |
|}}ŒÐ|  
                    | j        |¦  «         |  
                    | j        |¦  «         | j        ret          |                     ¦   «         ¦  «        }|  
                    | j        |¦  «         |                     t          | j        ¦  «        ¦  «         d S d S )Nc                 óF   — g | ]}t          t          |¦  «        ¦  «        ‘ŒS r   )r   r   ©Ú.0Úxs     r   ú
<listcomp>z*CipherSelfTest.runTest.<locals>.<listcomp>o   s$   € ÐBÐBÐB¨Q�7¥1 Q¡4¤4™=œ=ÐBÐBÐBr   é   )r   r   r   r    Úranger<   Úupdater   ÚencryptÚdecryptÚassertEqualr!   ÚdigestÚverify)r1   r   r   r    ÚctÚptÚiÚcipherÚdecipherÚcompÚctXÚptXr!   s                r   ÚrunTestzCipherSelfTest.runTestj   s¾  € Ý˜DœNÑ+Ô+ˆ	Ý˜Tœ_Ñ-Ô-ˆ
Øˆ
ØŒ?ð 	CØBÐB°$´/ÐBÑBÔBˆJàˆØˆõ �q‘”ð 	ð 	ˆAØ—Y’Y‘[”[ˆFØ—y’y‘{”{ˆHð #ð &ð &�Ø—’˜dÑ#Ô#Ð#Ø—’ Ñ%Ô%Ð%Ð%å˜&Ÿ.š.¨Ñ3Ô3Ñ4Ô4ˆCÝ˜(×*Ò*¨:Ñ6Ô6Ñ7Ô7ˆCàð *Ø× Ò   SÑ)Ô)Ð)Ø× Ò   SÑ)Ô)Ð)Ø˜#�ˆBˆBà×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜œ¨Ñ,Ô,Ð,àŒ8ð 	/Ý˜&Ÿ-š-™/œ/Ñ*Ô*ˆCØ×Ò˜TœX sÑ+Ô+Ð+Ø�OŠO�G D¤HÑ-Ô-Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/r   N)r
   r   r   r)   r6   r<   rA   rX   r   r   r   r   r   .   s`   € € € € € ð$#ð $#ð $#ðL ð  ð  ð
:ð 
:ð 
:ð?ð ?ð ?ð
%/ð %/ð %/ð %/ð %/r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚCipherStreamingSelfTestc                 óD   — | j         }| j        �|d| j        ›d�z  }|›d�S )Nz in z modez# should behave like a stream cipher)r   r"   r-   )r1   Údescs     r   r6   z(CipherStreamingSelfTest.shortDescription“   s4   € ØÔˆØŒ9Ð ØˆD T¤^ ^ ^Ð5Ñ5ˆDØ:>¸$¸$Ð@Ð@r   c           	      ó&  — t          | j        ¦  «        }t          | j        ¦  «        }g }|                      ¦   «         }t	          dt          |¦  «        d¦  «        D ]5}|                     |                     |||dz   …         ¦  «        ¦  «         Œ6t          t          d¦  «         
                    |¦  «        ¦  «        }|                      | j        |¦  «         g }|                      ¦   «         }t	          dt          |¦  «        d¦  «        D ]5}|                     |                     |||dz   …         ¦  «        ¦  «         Œ6t          t          d¦  «         
                    |¦  «        ¦  «        }|                      | j        |¦  «         d S )Nr   é   Ú )r   r   r   r<   rI   ÚlenÚappendrK   r   r   ÚjoinrM   )r1   r   r   Úct3rS   rR   Úpt3s          r   rX   zCipherStreamingSelfTest.runTest™   sV  € Ý˜DœNÑ+Ô+ˆ	Ý˜Tœ_Ñ-Ô-ˆ
ð
 ˆØ—’‘”ˆÝ�q�#˜i™.œ.¨!Ñ,Ô,ð 	9ð 	9ˆAØ�JŠJ�v—~’~ i°°!°A±#°Ô&6Ñ7Ô7Ñ8Ô8Ð8Ð8Ý•a˜‘e”e—j’j ‘o”oÑ&Ô&ˆØ×Ò˜œ¨#Ñ.Ô.Ð.ð ˆØ—’‘”ˆÝ�q�#˜j™/œ/¨1Ñ-Ô-ð 	:ð 	:ˆAØ�JŠJ�v—~’~ j°°1°Q±3°Ô&7Ñ8Ô8Ñ9Ô9Ð9Ð9å•a˜‘e”e—j’j ‘o”oÑ&Ô&ˆØ×Ò˜œ¨Ñ-Ô-Ð-Ð-Ð-r   N)r
   r   r   r6   rX   r   r   r   rZ   rZ   ‘   s5   € € € € € ðAð Að Að.ð .ð .ð .ð .r   rZ   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚRoundtripTestc                 ó@  — ddl m} t          j                             | ¦  «         || _        |                     |j        ¦  «        | _        t          |d         ¦  «        | _
        dt          |d         ¦  «        z  | _        |                     dd ¦  «        | _        d S )Nr   )ÚRandomr   éd   r   r   )Ú
Cryptodomerh   r'   r(   r)   r*   Úget_random_bytesÚ
block_sizer$   r   r   r   Úgetr   )r1   r*   r2   rh   s       r   r)   zRoundtripTest.__init__²   s’   € Ø%Ð%Ð%Ð%Ð%Ð%ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒØ×)Ò)¨&Ô*;Ñ<Ô<ˆŒÝ�V˜E”]Ñ#Ô#ˆŒØ�q ¨Ô!4Ñ5Ô5Ñ5ˆŒØ!Ÿ:š: m°TÑ:Ô:ˆÔÐÐr   c                 ó   — | j         ›d�S )Nz6 .decrypt() output of .encrypt() should not be garbled)r   r5   s    r   r6   zRoundtripTest.shortDescription»   s   € ØQUÔQaÐQaÐQaÐcÐcr   c                 óf  — | j         j        }| j                              t          | j        ¦  «        |¦  «        }|                     | j        ¦  «        }| j                              t          | j        ¦  «        |¦  «        }|                     |¦  «        }|                      | j        |¦  «         d S r4   )	r*   ÚMODE_ECBr9   r   r   rK   r   rL   rM   )r1   r"   Úencryption_cipherr   Údecryption_cipherÚdecrypted_plaintexts         r   rX   zRoundtripTest.runTest¾   s–   € ð Œ{Ô#ˆØ œKŸOšO­G°D´HÑ,=Ô,=¸tÑDÔDÐØ&×.Ò.¨t¬~Ñ>Ô>ˆ
Ø œKŸOšO­G°D´HÑ,=Ô,=¸tÑDÔDÐØ/×7Ò7¸
ÑCÔCÐØ×Ò˜œÐ)<Ñ=Ô=Ð=Ð=Ð=r   N)r
   r   r   r)   r6   rX   r   r   r   rf   rf   ±   sD   € € € € € ð;ð ;ð ;ðdð dð dð>ð >ð >ð >ð >r   rf   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚIVLengthTestc                 ó†   — t           j                             | ¦  «         || _        t	          |d         ¦  «        | _        d S ©Nr   ©r'   r(   r)   r*   r   r   ©r1   r*   r2   s      r   r)   zIVLengthTest.__init__Ê   ó7   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒÝ�V˜E”]Ñ#Ô#ˆŒˆˆr   c                 ó   — dS )NzTCheck that all modes except MODE_ECB and MODE_CTR require an IV of the proper lengthr   r5   s    r   r6   zIVLengthTest.shortDescriptionÏ   s   € ØeÐer   c           	      ó¨   — |                       t          | j        j        t	          | j        ¦  «        | j        j        t          d¦  «        ¦  «         d S )Nr_   )ÚassertRaisesÚ	TypeErrorr*   r9   r   r   rp   r   r5   s    r   rX   zIVLengthTest.runTestÒ   sH   € Ø×Ò�) T¤[¤_µg¸d¼hÑ6GÔ6GØ”Ô$¥a¨¡e¤eñ	-ô 	-ð 	-ð 	-ð 	-r   c                 ó    — d| j         j        z  S )Nú )r*   rl   r5   s    r   Ú_dummy_counterzIVLengthTest._dummy_counterÖ   s   € Ø�d”kÔ,Ñ,Ð,r   N)r
   r   r   r)   r6   rX   r�   r   r   r   ru   ru   É   sS   € € € € € ð$ð $ð $ð
fð fð fð-ð -ð -ð-ð -ð -ð -ð -r   ru   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚNoDefaultECBTestc                 ó†   — t           j                             | ¦  «         || _        t	          |d         ¦  «        | _        d S rw   rx   ry   s      r   r)   zNoDefaultECBTest.__init__Û   rz   r   c                 óv   — |                       t          | j        j        t	          | j        ¦  «        ¦  «         d S r4   )r}   r~   r*   r9   r   r   r5   s    r   rX   zNoDefaultECBTest.runTestà   s.   € Ø×Ò�) T¤[¤_µg¸d¼hÑ6GÔ6GÑHÔHÐHÐHÐHr   N©r
   r   r   r)   rX   r   r   r   rƒ   rƒ   Ú   s7   € € € € € ð$ð $ð $ð
Ið Ið Ið Ið Ir   rƒ   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚBlockSizeTestc                 ó    — t           j                             | ¦  «         || _        t	          t          |d         ¦  «        ¦  «        | _        d S rw   )r'   r(   r)   r*   r   r   r   ry   s      r   r)   zBlockSizeTest.__init__å   s?   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒÝ�1˜V Eœ]Ñ+Ô+Ñ,Ô,ˆŒˆˆr   c                 ó¤   — | j                              | j        | j         j        ¦  «        }|                      |j        | j         j        ¦  «         d S r4   )r*   r9   r   rp   rM   rl   )r1   rS   s     r   rX   zBlockSizeTest.runTestê   sB   € Ø”—’ ¤¨4¬;Ô+?Ñ@Ô@ˆØ×Ò˜Ô*¨D¬KÔ,BÑCÔCÐCÐCÐCr   Nr†   r   r   r   rˆ   rˆ   ä   s7   € € € € € ð-ð -ð -ð
Dð Dð Dð Dð Dr   rˆ   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚByteArrayTestz;Verify we can use bytearray's for encrypting and decryptingc                 óì  — t           j                             | ¦  «         || _        |                     ¦   «         }t          |d¦  «        | _        t          t          |d¦  «        ¦  «        | _        t          t          |d¦  «        ¦  «        | _	        t          t          |d¦  «        ¦  «        | _
        t          |dd ¦  «        | _        t          |dd ¦  «        | _        t          |dd ¦  «        | _        | j        rt          | j        ¦  «        | _        t          |dd ¦  «        }t          |¦  «        | _        |�qt!          | j        d	|z   ¦  «        | _        t          |d
d ¦  «        | _        | j        €t          |dd ¦  «        | _        | j        �t          | j        ¦  «        | _        n=d | _        t          |d
d ¦  «        | _        | j        �t          | j        ¦  «        | _        || _        d S r   r&   r0   s       r   r)   zByteArrayTest.__init__ò   ó   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒð —’‘”ˆÝ# F¨MÑ:Ô:ˆÔÝ•X˜f eÑ,Ô,Ñ-Ô-ˆŒÝ�8 F¨KÑ8Ô8Ñ9Ô9ˆŒÝ�H V¨\Ñ:Ô:Ñ;Ô;ˆŒÝ# F¨M¸4Ñ@Ô@ˆÔÝ" 6¨<¸Ñ>Ô>ˆŒÝ˜F E¨4Ñ0Ô0ˆŒØŒ?ð 	#Ý˜œ‘{”{ˆDŒHå˜ ¨Ñ-Ô-ˆÝ˜T™œˆŒàÐå ¤¨W°t©^Ñ<Ô<ˆDŒIå˜v t¨TÑ2Ô2ˆDŒGØŒwˆÝ" 6¨7°DÑ9Ô9�”ØŒwÐ"Ý˜DœG™*œ*�”øð ˆDŒIÝ˜v t¨TÑ2Ô2ˆDŒGØŒwÐ"Ý˜DœG™*œ*�”à"ˆÔÐÐr   c                 óè   — | j                              ¦   «         }t          | j        ¦  «        }g }| j        �| j        g}| j        �|t          | j        ¦  «        gz  } | j        j        |g|¢R i |¤ŽS r4   r8   r:   s       r   r<   zByteArrayTest._new  r=   r   c                 óR  — t          | j        ¦  «        }t          | j        ¦  «        }g }| j        rd„ | j        D ¦   «         }|                      ¦   «         }|                      ¦   «         }|D ],}|                     |¦  «         |                     |¦  «         Œ-t          |                     t          |¦  «        ¦  «        ¦  «        }t          | 	                    t          |¦  «        ¦  «        ¦  «        }|  
                    | j        |¦  «         |  
                    | j        |¦  «         | j        rrt          |                     ¦   «         ¦  «        }	|  
                    | j        |	¦  «         |                     t          t          | j        ¦  «        ¦  «        ¦  «         d S d S )Nc           	      ó`   — g | ]+}t          t          t          |¦  «        ¦  «        ¦  «        ‘Œ,S r   )Ú	bytearrayr   r   rD   s     r   rG   z)ByteArrayTest.runTest.<locals>.<listcomp>)  s,   € ÐMÐMÐM¸�9¥W­Q¨q©T¬T¡]¤]Ñ3Ô3ÐMÐMÐMr   )r   r   r   r    r<   rJ   r   rK   r’   rL   rM   r!   rN   rO   ©
r1   r   r   r    rS   rT   rU   rP   rQ   r!   s
             r   rX   zByteArrayTest.runTest#  sv  € å˜DœNÑ+Ô+ˆ	Ý˜Tœ_Ñ-Ô-ˆ
Øˆ
ØŒ?ð 	NØMÐM¸T¼_ÐMÑMÔMˆJà—’‘”ˆØ—9’9‘;”;ˆð ð 	"ð 	"ˆDØ�MŠM˜$ÑÔÐØ�OŠO˜DÑ!Ô!Ð!Ð!å�V—^’^¥I¨iÑ$8Ô$8Ñ9Ô9Ñ:Ô:ˆÝ�X×%Ò%¥i°
Ñ&;Ô&;Ñ<Ô<Ñ=Ô=ˆà×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜œ¨Ñ,Ô,Ð,àŒ8ð 	:Ý˜&Ÿ-š-™/œ/Ñ*Ô*ˆCØ×Ò˜TœX sÑ+Ô+Ð+Ø�OŠO�I¥g¨d¬hÑ&7Ô&7Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9ð	:ð 	:r   N©r
   r   r   Ú__doc__r)   r<   rX   r   r   r   rŒ   rŒ   ï   sH   € € € € € ØEÐEð##ð ##ð ##ðJ
:ð 
:ð 
:ð:ð :ð :ð :ð :r   rŒ   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚMemoryviewTestz;Verify we can use memoryviews for encrypting and decryptingc                 óì  — t           j                             | ¦  «         || _        |                     ¦   «         }t          |d¦  «        | _        t          t          |d¦  «        ¦  «        | _        t          t          |d¦  «        ¦  «        | _	        t          t          |d¦  «        ¦  «        | _
        t          |dd ¦  «        | _        t          |dd ¦  «        | _        t          |dd ¦  «        | _        | j        rt          | j        ¦  «        | _        t          |dd ¦  «        }t          |¦  «        | _        |�qt!          | j        d	|z   ¦  «        | _        t          |d
d ¦  «        | _        | j        €t          |dd ¦  «        | _        | j        �t          | j        ¦  «        | _        n=d | _        t          |d
d ¦  «        | _        | j        �t          | j        ¦  «        | _        || _        d S r   r&   r0   s       r   r)   zMemoryviewTest.__init__B  rŽ   r   c                 óè   — | j                              ¦   «         }t          | j        ¦  «        }g }| j        �| j        g}| j        �|t          | j        ¦  «        gz  } | j        j        |g|¢R i |¤ŽS r4   r8   r:   s       r   r<   zMemoryviewTest._newg  r=   r   c                 óR  — t          | j        ¦  «        }t          | j        ¦  «        }g }| j        rd„ | j        D ¦   «         }|                      ¦   «         }|                      ¦   «         }|D ],}|                     |¦  «         |                     |¦  «         Œ-t          |                     t          |¦  «        ¦  «        ¦  «        }t          | 	                    t          |¦  «        ¦  «        ¦  «        }|  
                    | j        |¦  «         |  
                    | j        |¦  «         | j        rrt          |                     ¦   «         ¦  «        }	|  
                    | j        |	¦  «         |                     t          t          | j        ¦  «        ¦  «        ¦  «         d S d S )Nc           	      ó`   — g | ]+}t          t          t          |¦  «        ¦  «        ¦  «        ‘Œ,S r   )Ú
memoryviewr   r   rD   s     r   rG   z*MemoryviewTest.runTest.<locals>.<listcomp>y  s,   € ÐNÐNÐN¸�:¥g­a°©d¬d¡m¤mÑ4Ô4ÐNÐNÐNr   )r   r   r   r    r<   rJ   r   rK   rœ   rL   rM   r!   rN   rO   r“   s
             r   rX   zMemoryviewTest.runTests  sv  € å˜DœNÑ+Ô+ˆ	Ý˜Tœ_Ñ-Ô-ˆ
Øˆ
ØŒ?ð 	OØNÐN¸d¼oÐNÑNÔNˆJà—’‘”ˆØ—9’9‘;”;ˆð ð 	"ð 	"ˆDØ�MŠM˜$ÑÔÐØ�OŠO˜DÑ!Ô!Ð!Ð!å�V—^’^¥J¨yÑ$9Ô$9Ñ:Ô:Ñ;Ô;ˆÝ�X×%Ò%¥j°Ñ&<Ô&<Ñ=Ô=Ñ>Ô>ˆà×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜œ¨Ñ,Ô,Ð,àŒ8ð 	;Ý˜&Ÿ-š-™/œ/Ñ*Ô*ˆCØ×Ò˜TœX sÑ+Ô+Ð+Ø�OŠO�J¥w¨t¬xÑ'8Ô'8Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:ð	;ð 	;r   Nr”   r   r   r   r—   r—   ?  sH   € € € € € ØEÐEð##ð ##ð ##ðJ
:ð 
:ð 
:ð;ð ;ð ;ð ;ð ;r   r—   c           
      ó  — g }d}t          t          |¦  «        ¦  «        D �]ä}||         }i }t          |¦  «        dk    r|\  |d<   |d<   |d<   n„t          |¦  «        dk    r|\  |d<   |d<   |d<   |d<   n]t          |¦  «        dk    r*|\  |d<   |d<   |d<   |d<   }	|                     |	¦  «         n t          d	t          |¦  «        fz  ¦  «        ‚d
|vrd|d
<   |                     ¦   «         }
t          |
d¦  «        }t          |
d¦  «        }t          |
d¦  «        }t          |
d
¦  «        }t          |
dd ¦  «        }|�|}n|dk    r|
s	d|›d|›�}nd|›d|›d|
›�}d||dz   |fz  }||d<   ||d<   |                     |¦  «         |sR|t          | |¦  «        t          | |¦  «        t          | |¦  «        t          | |¦  «        t          | |¦  «        gz  }d}|                     t          | |¦  «        ¦  «         �Œæ|S )NFr^   r   r   r   é   r   é   úUnsupported tuple size %dr"   ÚECBúp=ú, k=ú, ú
%s #%d: %sé   r   T)rI   r`   rJ   ÚAssertionErrorr+   r   rf   ru   rƒ   rŒ   rˆ   ra   r   )r*   r   Ú	test_dataÚadditional_paramsÚtestsÚextra_tests_addedrR   Úrowr2   r/   Úp2Úp_keyÚp_plaintextÚp_ciphertextÚp_modeÚp_descriptionr   r@   s                     r   Úmake_block_testsr³   �  su  € Ø€EØÐÝ•3�y‘>”>Ñ"Ô"ð 75ñ 75ˆØ˜Œlˆð ˆÝˆs‰8Œ8�qŠ=ˆ=ØILÑFˆV�KÑ  &¨Ñ"6¸¸u¹¸Ý�‰XŒX˜Š]ˆ]Ø`cÑ]ˆV�KÑ  &¨Ñ"6¸¸u¹ÀvÈmÑG\ÐG\Ý�‰XŒX˜Š]ˆ]ØnqÑkˆV�KÑ  &¨Ñ"6¸¸u¹ÀvÈmÑG\Ð^jØ�MŠM˜,Ñ'Ô'Ð'Ð'å Ð!<ÅÀCÁÄ¸{Ñ!JÑKÔKÐKà˜ÐÐØ"ˆF�6‰Nð �[Š[‰]Œ]ˆÝ˜˜UÑ#Ô#ˆÝ˜r ;Ñ/Ô/ˆÝ  LÑ1Ô1ˆÝ˜"˜fÑ%Ô%ˆÝ   ]°DÑ9Ô9ˆàÐ$Ø'ˆKˆKØ�uŠ_ˆ_ Rˆ_ˆ_Ø*5¨+¨+°u°uÐ=ˆKˆKøà.9¨k¨k¸5¸5¸5À"À"ÐEˆKØ˜{¨A¨a©C°Ð=Ñ=ˆØ $ˆˆ}ÑØ +ˆˆ}ÑØ�ŠÐ'Ñ(Ô(Ð(ð !ð 	%ØÝ˜f fÑ-Ô-Ý˜V VÑ,Ô,Ý  ¨Ñ0Ô0Ý˜f fÑ-Ô-Ý˜f fÑ-Ô-ðñ ˆEð !%Ðð 	�Š•^ F¨FÑ3Ô3Ñ4Ô4Ð4Ñ4à€Lr   c                 óì  — g }d}t          t          |¦  «        ¦  «        D �]Ñ}||         }i }t          |¦  «        dk    r|\  |d<   |d<   |d<   n„t          |¦  «        dk    r|\  |d<   |d<   |d<   |d<   n]t          |¦  «        dk    r*|\  |d<   |d<   |d<   |d<   }|                     |¦  «         n t          d	t          |¦  «        fz  ¦  «        ‚|                     ¦   «         }	t          |	d¦  «        }
t          |	d¦  «        }t          |	d¦  «        }t          |	dd ¦  «        }|�|}n|	s	d
|›d|
›�}nd
|›d|
›d|	›�}d||dz   |fz  }||d<   ||d<   |sP|t          | |¦  «        gz  }dd l}|j        d d…         dk    r#| 	                    t          | |¦  «        ¦  «         d}| 	                    t          | |¦  «        ¦  «         | 	                    t          | |¦  «        ¦  «         �ŒÓ|S )NFr^   r   r   r   rž   r   rŸ   r    r¢   r£   r¤   r¥   r¦   r   r   z2.6T)rI   r`   rJ   r§   r+   r   rŒ   ÚsysÚversionra   r—   r   rZ   )r*   r   r¨   rª   r«   rR   r¬   r2   r/   r­   r®   r¯   r°   r²   r   r@   rµ   s                    r   Úmake_stream_testsr·   Í  si  € Ø€EØÐÝ•3�y‘>”>Ñ"Ô"ð ->ñ ->ˆØ˜Œlˆð ˆÝˆs‰8Œ8�qŠ=ˆ=ØILÑFˆV�KÑ  &¨Ñ"6¸¸u¹¸Ý�‰XŒX˜Š]ˆ]Ø`cÑ]ˆV�KÑ  &¨Ñ"6¸¸u¹ÀvÈmÑG\ÐG\Ý�‰XŒX˜Š]ˆ]ØnqÑkˆV�KÑ  &¨Ñ"6¸¸u¹ÀvÈmÑG\Ð^jØ�MŠM˜,Ñ'Ô'Ð'Ð'å Ð!<ÅÀCÁÄ¸{Ñ!JÑKÔKÐKð �[Š[‰]Œ]ˆÝ˜˜UÑ#Ô#ˆÝ˜r ;Ñ/Ô/ˆÝ  LÑ1Ô1ˆÝ   ]°DÑ9Ô9ˆàÐ$Ø'ˆKˆKØð 	Fð 	FØ*5¨+¨+°u°uÐ=ˆKˆKð	Fð /:¨k¨k¸5¸5¸5À"À"ÐEˆKØ˜{¨A¨a©C°Ð=Ñ=ˆØ $ˆˆ}ÑØ +ˆˆ}Ñð !ð 	%ØÝ˜f fÑ-Ô-ðñ ˆEð ˆJˆJˆJØŒ{˜2˜A˜2Œ %Ò'Ð'Ø—’�^¨F°FÑ;Ô;Ñ<Ô<Ð<Ø $Ðð 	�Š•^ F¨FÑ3Ô3Ñ4Ô4Ð4Ø�ŠÕ,¨V°VÑ<Ô<Ñ=Ô=Ð=Ñ=Ø€Lr   )r•   r'   Úbinasciir   r   r   ÚCryptodome.Util.py3compatr   ÚCryptodome.Util.strxorr   r	   r   r(   r   rZ   rf   ru   rƒ   rˆ   rŒ   r—   Údictr³   r·   r   r   r   ú<module>r¼      sS  ðð2 1Ð 0à €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ð Ñ Ô Ð Ø%ð 	ð 	ð 	ð 	ða/ð a/ð a/ð a/ð a/�XÔ&ñ a/ô a/ð a/ðF.ð .ð .ð .ð .˜nñ .ô .ð .ð@>ð >ð >ð >ð >�HÔ%ñ >ô >ð >ð0-ð -ð -ð -ð -�8Ô$ñ -ô -ð -ð"Ið Ið Ið Ið I�xÔ(ñ Iô Ið IðDð Dð Dð Dð D�HÔ%ñ Dô Dð DðM:ð M:ð M:ð M:ð M:�HÔ%ñ M:ô M:ð M:ð`M;ð M;ð M;ð M;ð M;�XÔ&ñ M;ô M;ð M;ð` HLÀtÁvÄvð <ð <ð <ð <ð|1ð 1ð 1ð 1ð 1r   