Ë
    	š„jk$  ã                   óú   — d dl Z d dlZd dlZd dl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	d
k(  r ej                  «        yy)é    Nc                   ó   — e Zd Zd„ Zd„ Zy)ÚTestCTR256NISTc           
      ó  — t         j                  dj                  dd«      j                  dd«      «      }t         j                  dj                  dd«      j                  dd«      «      }t         j                  dj                  dd«      j                  dd«      «      }t         j                  dj                  dd«      j                  dd«      «      }| j                  t	        j
                  |||t        d«      «      |«       y )	Núa
        603DEB10 15CA71BE 2B73AEF0 857D7781
        1F352C07 3B6108D7 2D9810A3 0914DFF4
        ú Ú ú
ú5
        F0F1F2F3 F4F5F6F7 F8F9FAFB FCFDFEFF
        ú¹
        6BC1BEE2 2E409F96 E93D7E11 7393172A
        AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51
        30C81C46 A35CE411 E5FBC119 1A0A52EF
        F69F2445 DF4F9B17 AD2B417B E66C3710
        ú¹
        601EC313 775789A5 B7A7F504 BBF3D228
        F443E3CA 4D62B59A CA84E990 CACAF5C5
        2B0930DA A23DE94C E87017BA 2D84988D
        DFC9C58D B67AADA6 13C2DD08 457941A6
        é   )ÚbytesÚfromhexÚreplaceÚassertEqualÚtgcryptoÚctr256_encrypt©ÚselfÚkeyÚivÚ	plaintextÚ
ciphertexts        úI/var/www/html/GAP/venv/lib/python3.12/site-packages/tests/ctr/test_ctr.pyÚtest_ctr256_encryptz"TestCTR256NIST.test_ctr256_encrypt   sÞ   € Ü�m‰mð ÷ ‰G�C˜ÓŸW™W T¨2Ó.ó0ˆô
 �]‰]ð ç‰G�C˜ÓŸW™W T¨2Ó.ó0ˆô —M‘Mð #÷
 ‰G�C˜ÓŸW™W T¨2Ó.ó0ˆ	ô —]‘]ð $÷
 ‰G�C˜ÓŸW™W T¨2Ó.ó0ˆ
ð 	×Ñœ×0Ñ0°¸CÀÄUÈ1ÃXÓNÐPZÕ[ó    c           
      ó  — t         j                  dj                  dd«      j                  dd«      «      }t         j                  dj                  dd«      j                  dd«      «      }t         j                  dj                  dd«      j                  dd«      «      }t         j                  dj                  dd«      j                  dd«      «      }| j                  t	        j
                  |||t        d«      «      |«       y )	Nr   r   r   r	   r
   r   r   r   )r   r   r   r   r   Úctr256_decrypt)r   r   r   r   r   s        r   Útest_ctr256_decryptz"TestCTR256NIST.test_ctr256_decrypt7   sÞ   € Ü�m‰mð ÷ ‰G�C˜ÓŸW™W T¨2Ó.ó0ˆô
 �]‰]ð ç‰G�C˜ÓŸW™W T¨2Ó.ó0ˆô —]‘]ð $÷
 ‰G�C˜ÓŸW™W T¨2Ó.ó0ˆ
ô —M‘Mð #÷
 ‰G�C˜ÓŸW™W T¨2Ó.ó0ˆ	ð 	×Ñœ×0Ñ0°¸SÀ"ÄeÈAÃhÓOÐQZÕ[r   N)Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r      s   „ ò\ó4\r   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestCTR256Cryptographyc           
      ó  — t         j                  d«      }t         j                  d«      }t         j                  d«      }t         j                  d«      }| j                  t        j                  |||t        d«      «      |«       y )NÚ@776BEFF2851DB06F4C8A0542C8696F6C6A81AF1EEC96B4D37FC1D689E6C1C104Ú 00000060DB5672C97AA8F0B200000001Ú 53696E676C6520626C6F636B206D7367Ú 145AD01DBF824EC7560863DC71E3E0C0r   ©r   r   r   r   r   r   s        r   Útest_ctr256_encrypt_extra1z1TestCTR256Cryptography.test_ctr256_encrypt_extra1U   sd   € Ü�m‰mÐ^Ó_ˆÜ�]‰]Ð=Ó>ˆÜ—M‘MÐ"DÓEˆ	Ü—]‘]Ð#EÓFˆ
à×Ñœ×0Ñ0°¸CÀÄUÈ1ÃXÓNÐPZÕ[r   c           
      ó  — t         j                  d«      }t         j                  d«      }t         j                  d«      }t         j                  d«      }| j                  t        j                  |||t        d«      «      |«       y )NÚ@F6D66D6BD52D59BB0796365879EFF886C66DD51A5B6A99744B50590C87A23884Ú 00FAAC24C1585EF15A43D87500000001Ú@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1FÚ@F05E231B3894612C49EE000B804EB2A9B8306B508F839D6A5530831D9344AF1Cr   r+   r   s        r   Útest_ctr256_encrypt_extra2z1TestCTR256Cryptography.test_ctr256_encrypt_extra2]   sd   € Ü�m‰mÐ^Ó_ˆÜ�]‰]Ð=Ó>ˆÜ—M‘MÐ"dÓeˆ	Ü—]‘]Ð#eÓfˆ
à×Ñœ×0Ñ0°¸CÀÄUÈ1ÃXÓNÐPZÕ[r   c           
      ó  — t         j                  d«      }t         j                  d«      }t         j                  d«      }t         j                  d«      }| j                  t        j                  |||t        d«      «      |«       y )NÚ@FF7A617CE69148E4F1726E2F43581DE2AA62D9F805532EDFF1EED687FB54153DÚ 001CC5B751A51D70A1C1114800000001ÚH000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223ÚHEB6C52821D0BBBF7CE7594462ACA4FAAB407DF866569FD07F48CC0B583D6071F1EC0E6B8r   r+   r   s        r   Útest_ctr256_encrypt_extra3z1TestCTR256Cryptography.test_ctr256_encrypt_extra3e   sd   € Ü�m‰mÐ^Ó_ˆÜ�]‰]Ð=Ó>ˆÜ—M‘MÐ"lÓmˆ	Ü—]‘]Ð#mÓnˆ
à×Ñœ×0Ñ0°¸CÀÄUÈ1ÃXÓNÐPZÕ[r   N)r    r!   r"   r,   r2   r8   r#   r   r   r%   r%   R   s   „ ò\ò\ó\r   r%   c                   ód   — e 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)ÚTestCTR256Inputz]'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'c                 óú   — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      «       d d d «       y # 1 sw Y   y xY w©Nz0function takes exactly \d arguments \(\d given\)é   é    é   )ÚassertRaisesRegexÚ	TypeErrorr   r   ÚosÚurandom©r   s    r   Ú&test_ctr256_encrypt_invalid_args_countz6TestCTR256Input.test_ctr256_encrypt_invalid_args_countq   óV   € Ø×#Ñ#¤IÐ/bÓcñ 	SÜ×#Ñ#¤B§J¡J¨q£M´2·:±:¸b³>Ä2Ç:Á:ÈbÃ>ÔR÷	S÷ 	Sñ 	Súó   —AA1Á1A:c                 óž   — | j                  t        | j                  «      5  t        j                  dddd«       d d d «       y # 1 sw Y   y xY w©Nr   é   é   é   )r@   rA   ÚTYPE_ERROR_PATTERNr   r   rD   s    r   Ú%test_ctr256_encrypt_invalid_args_typez5TestCTR256Input.test_ctr256_encrypt_invalid_args_typeu   óA   € Ø×#Ñ#¤I¨t×/FÑ/FÓGñ 	0Ü×#Ñ# A q¨!¨QÔ/÷	0÷ 	0ñ 	0úó   ¡AÁAc           	      óè   — | j                  t        d«      5  t        j                  dt	        j
                  d«      t	        j
                  d«      t        d«      «       d d d «       y # 1 sw Y   y xY w©NzData must not be emptyr   r>   r?   r   ©r@   Ú
ValueErrorr   r   rB   rC   r   rD   s    r   Útest_ctr256_encrypt_empty_dataz.TestCTR256Input.test_ctr256_encrypt_empty_datay   óT   € Ø×#Ñ#¤JÐ0IÓJñ 	SÜ×#Ñ# C¬¯©°B«¼¿¹ÀB»ÌÈqËÔR÷	S÷ 	Sñ 	Súó   —AA(Á(A1c           	      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        d«      «       d d d «       y # 1 sw Y   y xY w©Nz!Key size must be exactly 32 bytesr=   é   r?   r   rS   rD   s    r   Ú$test_ctr256_encrypt_invalid_key_sizez4TestCTR256Input.test_ctr256_encrypt_invalid_key_size}   ó_   € Ø×#Ñ#¤JÐ0TÓUñ 	]Ü×#Ñ#¤B§J¡J¨q£M´2·:±:¸b³>Ä2Ç:Á:ÈbÃ>ÔSXÐYZÓS[Ô\÷	]÷ 	]ñ 	]úó   —AA;Á;Bc           	      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        d«      «       d d d «       y # 1 sw Y   y xY w©Nz IV size must be exactly 16 bytesr=   r>   é   r   rS   rD   s    r   Ú#test_ctr256_encrypt_invalid_iv_sizez3TestCTR256Input.test_ctr256_encrypt_invalid_iv_size�   ó_   € Ø×#Ñ#¤JÐ0SÓTñ 	]Ü×#Ñ#¤B§J¡J¨q£M´2·:±:¸b³>Ä2Ç:Á:ÈbÃ>ÔSXÐYZÓS[Ô\÷	]÷ 	]ñ 	]úr]   c           
      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        g d¢«      «       d d d «       y # 1 sw Y   y xY w©Nz!State size must be exactly 1 byter=   r>   r?   )r   rJ   rK   rS   rD   s    r   Ú&test_ctr256_encrypt_invalid_state_sizez6TestCTR256Input.test_ctr256_encrypt_invalid_state_size…   ó_   € Ø×#Ñ#¤JÐ0TÓUñ 	eÜ×#Ñ#¤B§J¡J¨q£M´2·:±:¸b³>Ä2Ç:Á:ÈbÃ>ÔSXÒYbÓScÔd÷	e÷ 	eñ 	eúó   —AA=Á=Bc           	      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        dg«      «       d d d «       y # 1 sw Y   y xY w©Nz*State value must be in the range \[0, 15\]r=   r>   r?   rS   rD   s    r   Ú'test_ctr256_encrypt_invalid_state_valuez7TestCTR256Input.test_ctr256_encrypt_invalid_state_value‰   ób   € Ø×#Ñ#¤JÐ0]Ó^ñ 	`Ü×#Ñ#¤B§J¡J¨q£M´2·:±:¸b³>Ä2Ç:Á:ÈbÃ>ÔSXÐZ\ÐY]ÓS^Ô_÷	`÷ 	`ñ 	`úó   —AA<Á<Bc                 óú   — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      «       d d d «       y # 1 sw Y   y xY wr<   )r@   rA   r   r   rB   rC   rD   s    r   Ú&test_ctr256_decrypt_invalid_args_countz6TestCTR256Input.test_ctr256_decrypt_invalid_args_count�   rF   rG   c                 óž   — | j                  t        | j                  «      5  t        j                  dddd«       d d d «       y # 1 sw Y   y xY wrI   )r@   rA   rM   r   r   rD   s    r   Ú%test_ctr256_decrypt_invalid_args_typez5TestCTR256Input.test_ctr256_decrypt_invalid_args_type‘   rO   rP   c           	      óè   — | j                  t        d«      5  t        j                  dt	        j
                  d«      t	        j
                  d«      t        d«      «       d d d «       y # 1 sw Y   y xY wrR   ©r@   rT   r   r   rB   rC   r   rD   s    r   Útest_ctr256_decrypt_empty_dataz.TestCTR256Input.test_ctr256_decrypt_empty_data•   rV   rW   c           	      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        d«      «       d d d «       y # 1 sw Y   y xY wrY   rr   rD   s    r   Ú$test_ctr256_decrypt_invalid_key_sizez4TestCTR256Input.test_ctr256_decrypt_invalid_key_size™   r\   r]   c           	      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        d«      «       d d d «       y # 1 sw Y   y xY wr_   rr   rD   s    r   Ú#test_ctr256_decrypt_invalid_iv_sizez3TestCTR256Input.test_ctr256_decrypt_invalid_iv_size�   rb   r]   c           
      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        g d¢«      «       d d d «       y # 1 sw Y   y xY wrd   rr   rD   s    r   Ú&test_ctr256_decrypt_invalid_state_sizez6TestCTR256Input.test_ctr256_decrypt_invalid_state_size¡   rf   rg   c           	      ó  — | j                  t        d«      5  t        j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      t        dg«      «       d d d «       y # 1 sw Y   y xY wri   rr   rD   s    r   Ú'test_ctr256_decrypt_invalid_state_valuez7TestCTR256Input.test_ctr256_decrypt_invalid_state_value¥   rk   rl   N)r    r!   r"   rM   rE   rN   rU   r[   ra   re   rj   rn   rp   rs   ru   rw   ry   r{   r#   r   r   r:   r:   n   sZ   „ ØyÐòSò0òSò]ò]òeò`òSò0òSò]ò]òeó`r   r:   c                   óh  — e Zd ZdZdZdZdZdj                  dd«      Z e	e«      D ]  Z
 eej                  dd	e
 ej                   ej                   d
e«      «       ej                  e«       e ej                  e«      «       e ej                   dd«      g«      ¬«      «       Œ�  e	e«      D ]  Z
 eej                  d	de
 ej                   ej                   d
e«      «       ej                  e«       e ej                  e«      «       e ej                   dd«      g«      ¬«      «       Œ� y)ÚTestCTR256Randomi   r>   r?   iô  ah  
    def test_ctr256_random_{mode1}_{count}(self):
        data = {data}
        key = {key}
        iv = {iv}
        iv_copy = iv.copy()
        state = {state}
        state_copy = state.copy()

        a = tgcrypto.ctr256_{mode1}(data, key, iv, state)
        b = tgcrypto.ctr256_{mode2}(a, key, iv_copy, state_copy)

        self.assertEqual(data, b)
    z
    r	   ÚencryptÚdecryptr   r   r`   )Úmode1Úmode2ÚcountÚdatar   r   ÚstateN)r    r!   r"   ÚDATA_MAX_SIZEÚKEY_SIZEÚIV_SIZEÚTESTS_AMOUNTr   ÚTEMPLATEÚranger‚   ÚexecÚformatrB   rC   ÚrandomÚrandintÚ	bytearrayr#   r   r   r}   r}   ª   sF  „ Ø€MØ€HØ€Gà€Lð÷ 	‰�˜$Óð ñ �|Ó$ò 
ˆÙØ�O‰OØØØØ�R—Z‘Z  §¡¨q°-Ó @ÓAØ�B—J‘J˜xÓ(Ù˜Z˜RŸZ™Z¨Ó0Ó1Ù  §¡°°2Ó!6Ð 7Ó8ð ó õ
	
ð
ñ �|Ó$ò 
ˆÙØ�O‰OØØØØ�R—Z‘Z  §¡¨q°-Ó @ÓAØ�B—J‘J˜xÓ(Ù˜Z˜RŸZ™Z¨Ó0Ó1Ù  §¡°°2Ó!6Ð 7Ó8ð ó õ
	
ñ
r   r}   Ú__main__)rB   r�   Úunittestr   ÚTestCaser   r%   r:   r}   r    Úmainr#   r   r   ú<module>r”      s~   ðó& 
Û Û ã ô5\�X×&Ñ&ô 5\ôp\˜X×.Ñ.ô \ô89`�h×'Ñ'ô 9`ôx.
�x×(Ñ(ô .
ðb ˆzÒØ€H‡M�M…Oð r   