Ë
    (üàgêN  ã                   óø  — d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZ d dlmZ d„ Z G d	„ d
e j"                  «      Z G d„ de«      Z G d„ de j"                  «      Z G d„ de«      ZdZdZeD ]  Zefd„Z eedez   e«       Œ eD ]  Zefd„Z eedez   e«       Œ [[dZeD ]  Zefd„Z eedez   e«       Œ  G d„ de j"                  «      Zi fd„Zedk(  rd„ Z e j@                  d¬«       yy) é    N)Ú	unhexlify)Úload_test_vectors)Úlist_test_cases)ÚtobytesÚ	is_string)ÚAESÚDES3ÚDES)ÚSHAKE128c                 ó^   — t        j                  t        | «      ¬«      j                  |«      S )N)Údata)r   Únewr   Úread)ÚtagÚlengths     ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_CBC.pyÚget_tag_randomr   )   s    € Ü�<‰<œW S›\Ô*×/Ñ/°Ó7Ð7ó    c                   óä   — e Zd Z edd«      Z edd«      Z edd«      Z edd«      Z edd«      Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚBlockChainingTestsÚkey_128é   Úkey_192é   Úiv_128Úiv_64é   Údata_128c                 óX  — t        j                  | j                  | j                  | j                  «      }t        dd«      }|j                  |«      }t        j                  | j                  | j                  | j                  «      }|j                  |«      }| j                  ||«       y )NÚ	plaintexté@  )	r   r   r   Úaes_moder   r   ÚencryptÚdecryptÚassertEqual©ÚselfÚcipherÚptÚctÚpt2s        r   Útest_loopback_128z$BlockChainingTests.test_loopback_1284   sv   € Ü—‘˜Ÿ™ t§}¡}°d·k±kÓBˆÜ˜K¨Ó2ˆØ�^‰^˜BÓˆä—‘˜Ÿ™ t§}¡}°d·k±kÓBˆØ�n‰n˜RÓ ˆØ×Ñ˜˜SÕ!r   c                 óX  — t        j                  | j                  | j                  | j                  «      }t        dd«      }|j                  |«      }t        j                  | j                  | j                  | j                  «      }|j                  |«      }| j                  ||«       y )Nr    i   )	r	   r   r   Ú	des3_moder   r   r#   r$   r%   r&   s        r   Útest_loopback_64z#BlockChainingTests.test_loopback_64=   sv   € Ü—‘˜$Ÿ,™,¨¯©¸¿
¹
ÓCˆÜ˜K¨Ó1ˆØ�^‰^˜BÓˆä—‘˜$Ÿ,™,¨¯©¸¿
¹
ÓCˆØ�n‰n˜RÓ ˆØ×Ñ˜˜SÕ!r   c                 óZ  — t        j                  | j                  | j                  «      }|j                  }t        j                  | j                  | j                  «      }|j                  }| j                  ||«       | j                  t        |«      d«       t        j                  | j                  | j                  | j                  «      }|j                  | j                  «      }t        j                  | j                  | j                  | j                  ¬«      }| j                  ||j                  | j                  «      «       t        j                  | j                  | j                  | j                  ¬«      }| j                  ||j                  | j                  «      «       y )Nr   ©Úiv)ÚIV)r   r   r   r"   r2   ÚassertNotEqualr%   Úlenr   r#   r   )r'   r(   Úiv1Úiv2r*   s        r   Útest_ivzBlockChainingTests.test_ivF   s  € ä—‘˜Ÿ™ t§}¡}Ó5ˆØ�i‰iˆÜ—‘˜Ÿ™ t§}¡}Ó5ˆØ�i‰iˆØ×Ñ˜C Ô%Ø×Ñœ˜S› 2Ô&ô —‘˜Ÿ™ t§}¡}°d·k±kÓBˆØ�^‰^˜DŸM™MÓ*ˆä—‘˜Ÿ™ t§}¡}¸¿¹ÔEˆØ×Ñ˜˜VŸ^™^¨D¯M©MÓ:Ô;ä—‘˜Ÿ™ t§}¡}¸¿¹ÔEˆØ×Ñ˜˜VŸ^™^¨D¯M©MÓ:Õ;r   c                 ó|   — | j                  t        t        j                  | j                  | j
                  d¬«       y )Nútest1234567890-*r1   )ÚassertRaisesÚ	TypeErrorr   r   r   r"   ©r'   s    r   Útest_iv_must_be_bytesz(BlockChainingTests.test_iv_must_be_bytesY   s,   € Ø×Ñœ)¤S§W¡W¨d¯l©l¸D¿M¹MØ2ð 	õ 	4r   c                 ó¦   — | j                  t        t        j                  | j                  | j
                  | j                  | j                  ¬«       y )N)r2   r3   ©r;   r<   r   r   r   r"   r   r=   s    r   Útest_only_one_ivz#BlockChainingTests.test_only_one_iv]   s6   € à×Ñœ)¤S§W¡W¨d¯l©l¸D¿M¹MØ!Ÿ[™[¨T¯[©[ð 	õ 	:r   c           	      óš  — | j                  t        t        j                  | j                  | j
                  d«       | j                  t        t        j                  | j                  | j
                  | j                  d d «       | j                  t        t        j                  | j                  | j
                  | j                  dz   «       y )Nr   é   ó   0)r;   Ú
ValueErrorr   r   r   r"   r   r=   s    r   Útest_iv_with_matching_lengthz/BlockChainingTests.test_iv_with_matching_lengthb   s…   € Ø×Ñœ*¤c§g¡g¨t¯|©|¸T¿]¹]Øô	à×Ñœ*¤c§g¡g¨t¯|©|¸T¿]¹]ØŸ+™+ c rÐ*ô	,à×Ñœ*¤c§g¡g¨t¯|©|¸T¿]¹]ØŸ+™+¨Ñ,õ	.r   c                 óÂ   — t        j                  | j                  | j                  | j                  «      }| j                  |j                  t         j                  «       y ©N)r   r   r   r"   r   r%   Ú
block_size©r'   r(   s     r   Útest_block_size_128z&BlockChainingTests.test_block_size_128j   s:   € Ü—‘˜Ÿ™ t§}¡}°d·k±kÓBˆØ×Ñ˜×*Ñ*¬C¯N©NÕ;r   c                 óÂ   — t        j                  | j                  | j                  | j                  «      }| j                  |j                  t         j                  «       y rH   )r	   r   r   r.   r   r%   rI   rJ   s     r   Útest_block_size_64z%BlockChainingTests.test_block_size_64n   s:   € Ü—‘˜$Ÿ,™,¨¯©¸¿
¹
ÓCˆØ×Ñ˜×*Ñ*¬D¯O©OÕ<r   c                 ó¬  — t        j                  | j                  | j                  | j                  «      }t        dd«      D ]&  }| j                  t        |j                  d|z  «       Œ( t        j                  | j                  | j                  | j                  «      }t        dd«      D ]&  }| j                  t        |j                  d|z  «       Œ( y )Né   r   ó   5)
r   r   r   r"   r   Úranger;   rE   r#   r$   ©r'   r(   Úwrong_lengths      r   Útest_unaligned_data_128z*BlockChainingTests.test_unaligned_data_128r   s¤   € Ü—‘˜Ÿ™ t§}¡}°d·k±kÓBˆÜ! ! B›Kò 	OˆLØ×Ñœj¨&¯.©.¸$ÀÑ:MÕNð	Oô —‘˜Ÿ™ t§}¡}°d·k±kÓBˆÜ! ! B›Kò 	OˆLØ×Ñœj¨&¯.©.¸$ÀÑ:MÕNñ	Or   c                 ó¬  — t        j                  | j                  | j                  | j                  «      }t        dd«      D ]&  }| j                  t        |j                  d|z  «       Œ( t        j                  | j                  | j                  | j                  «      }t        dd«      D ]&  }| j                  t        |j                  d|z  «       Œ( y )NrO   r   rP   )
r	   r   r   r.   r   rQ   r;   rE   r#   r$   rR   s      r   Útest_unaligned_data_64z)BlockChainingTests.test_unaligned_data_64{   s¤   € Ü—‘˜$Ÿ,™,¨¯©¸¿
¹
ÓCˆÜ! ! A›Jò 	OˆLØ×Ñœj¨&¯.©.¸$ÀÑ:MÕNð	Oô —‘˜$Ÿ,™,¨¯©¸¿
¹
ÓCˆÜ! ! A›Jò 	OˆLØ×Ñœj¨&¯.©.¸$ÀÑ:MÕNñ	Or   c                 óP  — t        dd«      }dD ]•  }t        j                  | j                  | j                  | j
                  «      } t        ||«      |«       | j                  |j                  | j
                  «       | j                  |j                  | j
                  «       Œ— y )Nr   r!   ©r#   r$   )
r   r   r   r   r"   r   Úgetattrr%   r2   r3   )r'   r   Úfuncr(   s       r   Útest_IV_iv_attributesz(BlockChainingTests.test_IV_iv_attributes„   s|   € Ü˜f hÓ/ˆØ(ò 	5ˆDÜ—W‘W˜TŸ\™\¨4¯=©=¸$¿+¹+ÓFˆFØ!ŒG�F˜DÓ! $Ô'Ø×Ñ˜VŸY™Y¨¯©Ô4Ø×Ñ˜VŸY™Y¨¯©Õ4ñ		5r   c                 óŒ  — | j                  t        t        j                  | j                  | j
                  | j                  d«       | j                  t        t        j                  | j                  | j
                  | j                  d¬«       t        j                  | j                  | j
                  | j                  d¬«       y )Né   )r2   ÚunknownF)r2   Ú	use_aesnir@   r=   s    r   Útest_unknown_parametersz*BlockChainingTests.test_unknown_parametersŒ   s}   € Ø×Ñœ)¤S§W¡W¨d¯l©l¸D¿M¹MØŸ+™+ qô	*à×Ñœ)¤S§W¡W¨d¯l©l¸D¿M¹MØ!Ÿ[™[°!ð 	ô 	5ô 	�‰�—‘˜dŸm™m°·±ÀuÖMr   c                 óÄ   — dD ][  }t        j                  | j                  | j                  | j                  «      } t        ||«      d«      }| j                  |d«       Œ] y )NrX   r   )r   r   r   r"   r   rY   r%   )r'   rZ   r(   Úresults       r   Útest_null_encryption_decryptionz2BlockChainingTests.test_null_encryption_decryption”   sR   € Ø(ò 	*ˆDÜ—W‘W˜TŸ\™\¨4¯=©=¸$¿+¹+ÓFˆFØ*”W˜V TÓ*¨3Ó/ˆFØ×Ñ˜V SÕ)ñ	*r   c                 ó   — t        j                  | j                  | j                  | j                  «      }|j                  d«       | j                  t        |j                  d«       t        j                  | j                  | j                  | j                  «      }|j                  d«       | j                  t        |j
                  d«       y )Nr   )	r   r   r   r"   r   r#   r;   r<   r$   rJ   s     r   Útest_either_encrypt_or_decryptz1BlockChainingTests.test_either_encrypt_or_decryptš   s‚   € Ü—‘˜Ÿ™ t§}¡}°d·k±kÓBˆØ�‰�sÔØ×Ñœ) V§^¡^°SÔ9ä—‘˜Ÿ™ t§}¡}°d·k±kÓBˆØ�‰�sÔØ×Ñœ) V§^¡^°SÕ9r   c                 ó\  — t        j                  | j                  | j                  | j                  «      }| j                  t        |j                  d«       t        j                  | j                  | j                  | j                  «      }| j                  t        |j                  d«       y )Nr:   )	r   r   r   r"   r   r;   r<   r#   r$   rJ   s     r   Útest_data_must_be_bytesz*BlockChainingTests.test_data_must_be_bytes£   sl   € Ü—‘˜Ÿ™ t§}¡}°d·k±kÓBˆØ×Ñœ) V§^¡^Ð5HÔIä—‘˜Ÿ™ t§}¡}°d·k±kÓBˆØ×Ñœ) V§^¡^Ð5HÕIr   c                 ób  — d}t        |«      }t        | j                  «      }t        | j                  «      }t        j                  | j                  | j
                  | j                  «      }|j                  |«      }t        j                  || j
                  |«      }d|d d d|d d |j                  |«      }| j                  ||«       | j                  |j                  |j                  «       t        | j                  «      }t        | j                  «      }t        j                  | j                  | j
                  | j                  «      }	|	j                  |«      }
t        j                  || j
                  |«      }d|d d d|d d |j                  |«      }| j                  |
|«       y ©Ns€   11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111s   ÿÿÿé   )
Ú	bytearrayr   r   r   r   r"   r#   r%   r2   r$   )r'   r   Údata_baÚkey_baÚiv_baÚcipher1Úref1Úcipher2Úref2Úcipher3Úref3Úcipher4Úref4s                r   Útest_bytearrayz!BlockChainingTests.test_bytearrayª   sP  € ØˆÜ˜D“/ˆô ˜4Ÿ<™<Ó(ˆÜ˜$Ÿ+™+Ó&ˆä—'‘'˜$Ÿ,™,¨¯©°t·{±{ÓCˆØ�‰˜tÓ$ˆä—'‘'˜& $§-¡-°Ó7ˆØ$ˆˆr�ˆ
Ø#ˆˆbˆqˆ	Ø�‰˜wÓ'ˆà×Ñ˜˜tÔ$Ø×Ñ˜Ÿ™ W§Z¡ZÔ0ô ˜4Ÿ<™<Ó(ˆÜ˜$Ÿ+™+Ó&ˆä—'‘'˜$Ÿ,™,¨¯©°t·{±{ÓCˆØ�‰˜tÓ$ˆä—'‘'˜& $§-¡-°Ó7ˆØ$ˆˆr�ˆ
Ø#ˆˆbˆqˆ	Ø�‰˜wÓ'ˆà×Ñ˜˜tÕ$r   c                 ó¼  — d}t        t        |«      «      }t        t        | j                  «      «      }t        t        | j                  «      «      }t	        j
                  | j                  | j                  | j                  «      }|j                  |«      }t	        j
                  || j                  |«      }d|d d d|d d |j                  |«      }| j                  ||«       | j                  |j                  |j                  «       t        t        | j                  «      «      }t        t        | j                  «      «      }t	        j
                  | j                  | j                  | j                  «      }	|	j                  |«      }
t	        j
                  || j                  |«      }d|d d d|d d |j                  |«      }| j                  |
|«       y ri   )Ú
memoryviewrk   r   r   r   r   r"   r#   r%   r2   r$   )r'   r   Údata_mvÚkey_mvÚiv_mvro   rp   rq   rr   rs   rt   ru   rv   s                r   Útest_memoryviewz"BlockChainingTests.test_memoryviewË   si  € ØˆÜœY t›_Ó-ˆô œI d§l¡lÓ3Ó4ˆÜœ9 T§[¡[Ó1Ó2ˆä—'‘'˜$Ÿ,™,¨¯©°t·{±{ÓCˆØ�‰˜tÓ$ˆä—'‘'˜& $§-¡-°Ó7ˆØ$ˆˆr�ˆ
Ø#ˆˆbˆqˆ	Ø�‰˜wÓ'ˆà×Ñ˜˜tÔ$Ø×Ñ˜Ÿ™ W§Z¡ZÔ0ô œI d§l¡lÓ3Ó4ˆÜœ9 T§[¡[Ó1Ó2ˆä—'‘'˜$Ÿ,™,¨¯©°t·{±{ÓCˆØ�‰˜tÓ$ˆä—'‘'˜& $§-¡-°Ó7ˆØ$ˆˆr�ˆ
Ø#ˆˆbˆqˆ	Ø�‰˜wÓ'ˆà×Ñ˜˜tÕ$r   c                 ó$  — d}t        j                  d| j                  | j                  ¬«      }|j	                  |«      }t        d«      }t        j                  d| j                  | j                  ¬«      }|j	                  ||¬«      }| j                  ||«       | j                  |d «       t        j                  d| j                  | j                  ¬«      }|j                  ||¬«      }| j                  ||«       | j                  |d «       y ©Nó€   55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ó   4444444444444444r1   é€   ©Úoutput©r   r   r"   r   r#   rk   r%   r$   )r'   r)   r(   r*   r„   Úress         r   Útest_output_paramz$BlockChainingTests.test_output_paramì   sÐ   € àˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�^‰^˜BÓˆä˜3“ˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�n‰n˜R¨ˆnÓ/ˆØ×Ñ˜˜VÔ$Ø×Ñ˜˜dÔ#ä—‘˜ $§-¡-°D·K±KÔ@ˆØ�n‰n˜R¨ˆnÓ/ˆØ×Ñ˜˜VÔ$Ø×Ñ˜˜dÕ#r   c                 ó:  — d}t        j                  d| j                  | j                  ¬«      }|j	                  |«      }t        |«      }t        j                  d| j                  | j                  ¬«      }|j	                  ||¬«      }| j                  ||«       | j                  |d «       t        |«      }t        j                  d| j                  | j                  ¬«      }|j                  ||¬«      }| j                  ||«       | j                  |d «       y )Nr€   r�   r1   rƒ   r…   )r'   r)   r(   r*   Úpt_bar†   Úct_bas          r   Útest_output_param_same_bufferz0BlockChainingTests.test_output_param_same_bufferþ   sÙ   € àˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�^‰^˜BÓˆä˜"“ˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�n‰n˜U¨5ˆnÓ1ˆØ×Ñ˜˜UÔ#Ø×Ñ˜˜dÔ#ä˜"“ˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�n‰n˜U¨5ˆnÓ1ˆØ×Ñ˜˜UÔ#Ø×Ñ˜˜dÕ#r   c                 óî  — d}t        j                  d| j                  | j                  ¬«      }|j	                  |«      }t        t        d«      «      }t        j                  d| j                  | j                  ¬«      }|j	                  ||¬«       | j                  ||«       t        j                  d| j                  | j                  ¬«      }|j                  ||¬«       | j                  ||«       y r   )	r   r   r"   r   r#   ry   rk   r%   r$   )r'   r)   r(   r*   r„   s        r   Útest_output_param_memoryviewz/BlockChainingTests.test_output_param_memoryview  s±   € àˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�^‰^˜BÓˆäœI c›NÓ+ˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�‰�r &ˆÔ)Ø×Ñ˜˜VÔ$ä—‘˜ $§-¡-°D·K±KÔ@ˆØ�‰�r &ˆÔ)Ø×Ñ˜˜VÕ$r   c                 ó,  — d}d|z  }t        j                  d| j                  | j                  ¬«      }|j	                  |«      }t        j                  d| j                  | j                  ¬«      }| j                  t        |j                  |d|z  ¬«       t        j                  d| j                  | j                  ¬«      }| j                  t        |j                  |d|z  ¬«       t        |dz
  «      }t        j                  d| j                  | j                  ¬«      }| j                  t        |j                  ||¬«       t        j                  d| j                  | j                  ¬«      }| j                  t        |j                  ||¬«       y )Nr‚   rP   r�   r1   rD   rƒ   rO   )
r   r   r"   r   r#   r;   r<   r$   rk   rE   )r'   ÚLEN_PTr)   r(   r*   Úshorter_outputs         r   Útest_output_param_negz(BlockChainingTests.test_output_param_neg   s"  € Øˆà�F‰]ˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ�^‰^˜BÓˆä—‘˜ $§-¡-°D·K±KÔ@ˆØ×Ñœ) V§^¡^°RÀÀvÁÐÔNä—‘˜ $§-¡-°D·K±KÔ@ˆØ×Ñœ) V§^¡^°RÀÀvÁÐÔNä" 6¨A¡:Ó.ˆÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ×Ñœ* f§n¡n°bÀÐÔPÜ—‘˜ $§-¡-°D·K±KÔ@ˆØ×Ñœ* f§n¡n°bÀÐÕPr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r,   r/   r8   r>   rA   rF   rK   rM   rT   rV   r[   r`   rc   re   rg   rw   r}   r‡   r‹   r�   r‘   © r   r   r   r   ,   s®   „ á˜Y¨Ó+€GÙ˜Y¨Ó+€GÙ˜H bÓ)€FÙ˜7 AÓ&€EÙ˜j¨"Ó-€Hò"ò"ò<ò&4ò:ò
.ò<ò=òOòOò5òNò*ò:òJò%òB%òB$ò$$ò&%óQr   r   c                   ó<   — e Zd Zej                  Zej                  Zy)ÚCbcTestsN)r’   r“   r”   r   ÚMODE_CBCr"   r	   r.   r•   r   r   r—   r—   4  s   „ Ø�|‰|€HØ—‘�Ir   r—   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚNistBlockChainingVectorsc                 óÔ  — t        d|ddd„ i«      }|€y d }|D ]Í  }t        |«      r|}Œ|j                  | _        t	        j
                  |j                  | j                  |j                  «      }|dk(  r6| j                  |j                  |j                  «      |j                  «       Œ’|dk(  r6| j                  |j                  |j                  «      |j                  «       ŒÍJ ‚ y )N©ÚCipherr   zAES CBC KATÚcountc                 ó   — t        | «      S rH   ©Úint©Úxs    r   ú<lambda>z;NistBlockChainingVectors._do_kat_aes_test.<locals>.<lambda>@  ó
   € ´#°a³&€ r   ú	[ENCRYPT]ú	[DECRYPT])r   r   ÚdescÚdescriptionr   r   Úkeyr"   r2   r%   r#   r    Ú
ciphertextr$   )r'   Ú	file_nameÚtest_vectorsÚ	directionÚtvr(   s         r   Ú_do_kat_aes_testz)NistBlockChainingVectors._do_kat_aes_test;  sÏ   € ä(Ð):Ø%Ø)Ø%Ñ(8Ð:ó=ˆð ÐØàˆ	Øò 	ˆBô ˜Œ}Ø�	Øà!Ÿw™wˆDÔä—W‘W˜RŸV™V T§]¡]°B·E±EÓ:ˆFØ˜KÒ'Ø× Ñ  §¡°·±Ó!=¸r¿}¹}ÕMØ˜kÒ)Ø× Ñ  §¡°·±Ó!>ÀÇÁÕMà�uñ	r   c                 óÄ  — t        d|ddd„ i«      }|€y d }|D �]D  }t        |«      r|}Œ|j                  | _        t	        j
                  |j                  | j                  |j                  «      }|dk(  rq|j                  g}t        d«      D ]6  }|j                  |j                  |j                  «      «       |d   |_        Œ8 | j                  |d   |j                  «       ŒÎ|d	k(  rr|j                  g}t        d«      D ]6  }|j                  |j                  |j                  «      «       |d   |_        Œ8 | j                  |d   |j                  «       �ŒEJ ‚ y )
Nrœ   zAES CBC Montecarlorž   c                 ó   — t        | «      S rH   r    r¢   s    r   r¤   z;NistBlockChainingVectors._do_mct_aes_test.<locals>.<lambda>\  r¥   r   r¦   iè  éþÿÿÿéÿÿÿÿr§   )r   r   r¨   r©   r   r   rª   r"   r2   rQ   Úappendr#   r    r%   r«   r$   )	r'   r¬   r­   r®   r¯   r(   Úctsrž   Úptss	            r   Ú_do_mct_aes_testz)NistBlockChainingVectors._do_mct_aes_testW  sE  € ä(Ð):Ø%Ø0Ø%Ñ(8Ð:ó=ˆð ÐØàˆ	Øó 	ˆBô ˜Œ}Ø�	Øà!Ÿw™wˆDÔÜ—W‘W˜RŸV™V T§]¡]°B·E±EÓ:ˆFà˜KÒ'ØŸ™�i�Ü" 4›[ò +�EØ—J‘J˜vŸ~™~¨b¯l©lÓ;Ô<Ø#& r¡7�B•Lð+ð × Ñ   R¡¨"¯-©-Õ8Ø˜kÒ)ØŸ™�h�Ü" 4›[ò ,�EØ—J‘J˜vŸ~™~¨b¯m©mÓ<Ô=Ø$'¨¡G�B•Mð,ð × Ñ   R¡¨"¯,©,Ö7à�uñ/	r   c                 óü  — t        d|ddd„ i«      }|€y d }|D �]`  }t        |«      r|}Œ|j                  | _        t	        |d«      r6t        j                  |j                  | j                  |j                  «      }n„|j                  |j                  k7  r'|j                  |j                  z   |j                  z   }n|j                  |j                  z   }t        j                  || j                  |j                  «      }|dk(  r7| j                  |j!                  |j"                  «      |j$                  «       �Œ%|dk(  r7| j                  |j'                  |j$                  «      |j"                  «       �ŒaJ ‚ y )N)r�   ÚTDESzTDES CBC KATrž   c                 ó   — t        | «      S rH   r    r¢   s    r   r¤   z8NistBlockChainingVectors._do_tdes_test.<locals>.<lambda>  r¥   r   Úkeysr¦   r§   )r   r   r¨   r©   Úhasattrr
   r   r¼   Údes_moder2   Úkey1Úkey3Úkey2r	   r.   r%   r#   r    r«   r$   )r'   r¬   r­   r®   r¯   r(   rª   s          r   Ú_do_tdes_testz&NistBlockChainingVectors._do_tdes_testz  s0  € ä(Ð);Ø%Ø*Ø%Ñ(8Ð:ó=ˆð ÐØàˆ	Øó 	ˆBô ˜Œ}Ø�	Øà!Ÿw™wˆDÔÜ�r˜6Ô"ÜŸ™ §¡¨$¯-©-¸¿¹Ó?‘à—7‘7˜bŸg™gÒ%ØŸ'™' B§G¡GÑ+¨b¯g©gÑ5‘CàŸ'™' B§G¡GÑ+�CÜŸ™ # t§~¡~°r·u±uÓ=�à˜KÒ'Ø× Ñ  §¡°·±Ó!=¸r¿}¹}ÖMØ˜kÒ)Ø× Ñ  §¡°·±Ó!>ÀÇÁÖMà�uñ-	r   N)r’   r“   r”   r°   r¸   rÂ   r•   r   r   rš   rš   9  s   „ òò8!óF r   rš   c                   óT   — e Zd Zej                  Zej                  Zej                  Z	y)ÚNistCbcVectorsN)
r’   r“   r”   r   r˜   r"   r
   r¾   r	   r.   r•   r   r   rÄ   rÄ   �  s   „ Ø�|‰|€HØ�|‰|€HØ—‘�Ir   rÄ   )zCBCGFSbox128.rspzCBCGFSbox192.rspzCBCGFSbox256.rspzCBCKeySbox128.rspzCBCKeySbox192.rspzCBCKeySbox256.rspzCBCVarKey128.rspzCBCVarKey192.rspzCBCVarKey256.rspzCBCVarTxt128.rspzCBCVarTxt192.rspzCBCVarTxt256.rspzCBCMMT128.rspzCBCMMT192.rspzCBCMMT256.rsp)zCBCMCT128.rspzCBCMCT192.rspzCBCMCT256.rspc                 ó&   — | j                  |«       y rH   )r°   ©r'   r¬   s     r   Únew_funcrÇ   ¾  ó   € Ø×Ñ˜iÕ(r   Ú	test_AES_c                 ó&   — | j                  |«       y rH   )r¸   rÆ   s     r   rÇ   rÇ   Ã  rÈ   r   )zTCBCMMT2.rspzTCBCMMT3.rspzTCBCinvperm.rspzTCBCpermop.rspzTCBCsubtab.rspzTCBCvarkey.rspzTCBCvartext.rspc                 ó&   — | j                  |«       y rH   )rÂ   rÆ   s     r   rÇ   rÇ   Ó  s   € Ø×Ñ˜9Õ%r   Ú
test_TDES_c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚSP800TestVectorszPClass exercising the CBC test vectors found in Section F.2
    of NIST SP 800-3Ac                 ó„  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |«      }| j	                  |j                  |«      |«       y )NÚ 2b7e151628aed2a6abf7158809cf4f3cÚ 000102030405060708090a0b0c0d0e0fÚ€6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710Ú€7649abac8119b246cee98e9b12e9197d5086cb9b507219ee95db113a917678b273bed6b8e3c1743b7116e69e222295163ff1caa1681fac09120eca307586e1a7©r   r   r   r˜   r%   r#   r$   ©r'   rª   r2   r    r«   r(   s         r   Útest_aes_128zSP800TestVectors.test_aes_128Þ  s    € Ø:ˆØ:ˆð;ˆ	ð;ˆ
ô
 ˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨BÓ/ˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨BÓ/ˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   c                 ó„  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |«      }| j	                  |j                  |«      |«       y )NÚ08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7brÑ   rÒ   Ú€4f021db243bc633d7178183a9fa071e8b4d9ada9ad7dedf4e5e738763f69145a571b242012fb7ae07fa9baac3df102e008b0e27988598881d920a9e64f5615cdrÔ   rÕ   s         r   Útest_aes_192zSP800TestVectors.test_aes_192ô  s    € ØJˆØ:ˆð;ˆ	ð;ˆ
ô
 ˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨BÓ/ˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨BÓ/ˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   c                 ó„  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |«      }| j	                  |j                  |«      |«       y )NÚ@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4rÑ   rÒ   Ú€f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc6702c7d39f23369a9d9bacfa530e26304231461b2eb05e2c39be9fcda6c19078c6a9d1brÔ   rÕ   s         r   Útest_aes_256zSP800TestVectors.test_aes_256
  s    € ØZˆØ:ˆð;ˆ	ð;ˆ
ô
 ˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨BÓ/ˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨BÓ/ˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   N)r’   r“   r”   Ú__doc__rÖ   rÚ   rÞ   r•   r   r   rÎ   rÎ   Ú  s   „ ñò@ò,@ó,@r   rÎ   c                 ó˜   — g }|t        t        «      z  }| j                  d«      r|t        t        «      z  }|t        t        «      z  }|S )NÚ
slow_tests)r   r—   ÚgetrÄ   rÎ   )ÚconfigÚtestss     r   Ú	get_testsrå   !  sF   € Ø€EØ	Œ_œXÓ&Ñ&€EØ‡z�z�,ÔØ”¤Ó0Ñ0ˆØ	Œ_Ô-Ó.Ñ.€EØ€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S rH   )ÚunittestÚ	TestSuiterå   r•   r   r   r¤   r¤   +  s   € ”H×&Ñ&¤y£{Ó3€ r   Úsuite)ÚdefaultTest)!rè   Úbinasciir   ÚCrypto.SelfTest.loaderr   ÚCrypto.SelfTest.st_commonr   ÚCrypto.Util.py3compatr   r   ÚCrypto.Cipherr   r	   r
   ÚCrypto.Hashr   r   ÚTestCaser   r—   rš   rÄ   Únist_aes_kat_mmt_filesÚnist_aes_mct_filesr¬   rÇ   ÚsetattrÚnist_tdes_filesrÎ   rå   r’   rê   Úmainr•   r   r   ú<module>rø      sK  ðó> Ý å 4Ý 5ß 4ß (Ñ (Ý  ò8ôEQ˜×*Ñ*ô EQôPÐ!ô ô
a˜x×0Ñ0ô aôHÐ-ô ðÐ ð&Ð ð (ò ?€IØ!*ó )áˆN˜K¨)Ñ3°XÕ>ð?ð
 $ò ?€IØ!*ó )áˆN˜K¨)Ñ3°XÕ>ð?ð ˆxð€ð !ò @€IØ!*ó &áˆN˜L¨9Ñ4°hÕ?ð@ôD@�x×(Ñ(ô D@ðN ó ð ˆzÒÙ3€EØ€H‡M�M˜gÖ&ð r   