
    i                         S SK r S SKrS SKrS SKr " S S\R                  5      r " S S\R                  5      r\S:X  a  \R                  " 5         gg)    Nc                   T    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestIGE256Input   z]'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'c                     U R                  [        S5         [        R                  " [        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fNz0function takes exactly \d arguments \(\d given\)       )assertRaisesRegex	TypeErrortgcryptoige256_encryptosurandomselfs    ?/app/mltbenv/lib/python3.13/site-packages/tests/ige/test_ige.py&test_ige256_encrypt_invalid_args_count6TestIGE256Input.test_ige256_encrypt_invalid_args_count   @    ##I/bc##BJJrNBJJrNC dcc   A A  
A.c                     U R                  [        U R                  5         [        R                  " SSS5        S S S 5        g ! , (       d  f       g = fN         )r
   r   TYPE_ERROR_PATTERNr   r   r   s    r   %test_ige256_encrypt_invalid_args_type5TestIGE256Input.test_ige256_encrypt_invalid_args_type!   7    ##It/F/FG##Aq!, HGG   A
Ac                     U R                  [        S5         [        R                  " S[        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fNzData must not be empty    r	   r
   
ValueErrorr   r   r   r   r   s    r   test_ige256_encrypt_empty_data.TestIGE256Input.test_ige256_encrypt_empty_data%   B    ##J0IJ##CBBH KJJ   AA!!
A/c                    U R                  [        S5         [        R                  " [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fNz!Key size must be exactly 32 bytesr      r	   r$   r   s    r   $test_ige256_encrypt_invalid_key_size4TestIGE256Input.test_ige256_encrypt_invalid_key_size)   J    ##J0TU##BJJrNBJJrNBJJrNS VUU   AA55
Bc                    U R                  [        S5         [        R                  " [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fNz IV size must be exactly 32 bytesr   r	   r,   r$   r   s    r   #test_ige256_encrypt_invalid_iv_size3TestIGE256Input.test_ige256_encrypt_invalid_iv_size-   J    ##J0ST##BJJrNBJJrNBJJrNS UTTr0   c                     U R                  [        S5         [        R                  " [        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fr   )r
   r   r   ige256_decryptr   r   r   s    r   &test_ige256_decrypt_invalid_args_count6TestIGE256Input.test_ige256_decrypt_invalid_args_count1   r   r   c                     U R                  [        U R                  5         [        R                  " SSS5        S S S 5        g ! , (       d  f       g = fr   )r
   r   r   r   r7   r   s    r   %test_ige256_decrypt_invalid_args_type5TestIGE256Input.test_ige256_decrypt_invalid_args_type5   r   r    c                     U R                  [        S5         [        R                  " S[        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fr"   r
   r%   r   r7   r   r   r   s    r   test_ige256_decrypt_empty_data.TestIGE256Input.test_ige256_decrypt_empty_data9   r(   r)   c                    U R                  [        S5         [        R                  " [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fr+   r>   r   s    r   $test_ige256_decrypt_invalid_key_size4TestIGE256Input.test_ige256_decrypt_invalid_key_size=   r/   r0   c                    U R                  [        S5         [        R                  " [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fr2   r>   r   s    r   #test_ige256_decrypt_invalid_iv_size3TestIGE256Input.test_ige256_decrypt_invalid_iv_sizeA   r5   r0    N)__name__
__module____qualname____firstlineno__r   r   r   r&   r-   r3   r8   r;   r?   rB   rE   __static_attributes__rG   r#   r   r   r      sB    yD-ITTD-ITTr#   r   c                      \ rS rSrSrSrSrSrSR                  SS5      r	\
" \5       Ha  r\" \	R                  SS	\\R                  " \R"                  " S
\5      S-  5      \R                  " \5      \R                  " \5      S95        Mc     \
" \5       Ha  r\" \	R                  S	S\\R                  " \R"                  " S
\5      S-  5      \R                  " \5      \R                  " \5      S95        Mc     Srg)TestIGE256RandomF   @   r	   i  a
  
    def test_ige256_random_{mode1}_{count}(self):
        data = {data}
        key = {key}
        iv = {iv}
        
        a = tgcrypto.ige256_{mode1}(data, key, iv)
        b = tgcrypto.ige256_{mode2}(a, key, iv)
        
        self.assertEqual(data, b)
    z
    
encryptdecryptr   r   )mode1mode2countdatakeyivrG   N)rH   rI   rJ   rK   DATA_CHUNK_MAX_SIZEKEY_SIZEIV_SIZETESTS_AMOUNTreplaceTEMPLATErangerV   execformatr   r   randomrandintrL   rG   r#   r   rN   rN   F   s    HGL
 	$  |$OOZZq2E F KLJJx(::g&  		
 % |$OOZZq2E F KLJJx(::g&  		
 %r#   rN   __main__)	r   rc   unittestr   TestCaser   rN   rH   mainrG   r#   r   <module>ri      sS   & 
   )Th'' )TX)
x(( )
X zMMO r#   