
    N[i                         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edk(  r ej                          yy)    Nc                   L    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y)TestIGE256Inputz]'\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             d d d        y # 1 sw Y   y xY wNz0function takes exactly \d arguments \(\d given\)       )assertRaisesRegex	TypeErrortgcryptoige256_encryptosurandomselfs    E/var/www/files/kim/lib/python3.12/site-packages/tests/ige/test_ige.py&test_ige256_encrypt_invalid_args_countz6TestIGE256Input.test_ige256_encrypt_invalid_args_count   L    ##I/bc 	D##BJJrNBJJrNC	D 	D 	D   =AA&c                     | j                  t        | j                        5  t        j                  ddd       d d d        y # 1 sw Y   y xY wN         )r	   r
   TYPE_ERROR_PATTERNr   r   r   s    r   %test_ige256_encrypt_invalid_args_typez5TestIGE256Input.test_ige256_encrypt_invalid_args_type!   ?    ##It/F/FG 	-##Aq!,	- 	- 	-   AAc                     | j                  t        d      5  t        j                  dt	        j
                  d      t	        j
                  d             d d d        y # 1 sw Y   y xY wNzData must not be empty    r   r	   
ValueErrorr   r   r   r   r   s    r   test_ige256_encrypt_empty_dataz.TestIGE256Input.test_ige256_encrypt_empty_data%   N    ##J0IJ 	I##CBBH	I 	I 	I   >AA'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Nz!Key size must be exactly 32 bytesr      r   r!   r   s    r   $test_ige256_encrypt_invalid_key_sizez4TestIGE256Input.test_ige256_encrypt_invalid_key_size)   V    ##J0TU 	T##BJJrNBJJrNBJJrNS	T 	T 	T   AA11A: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Nz IV size must be exactly 32 bytesr   r   r(   r!   r   s    r   #test_ige256_encrypt_invalid_iv_sizez3TestIGE256Input.test_ige256_encrypt_invalid_iv_size-   V    ##J0ST 	T##BJJrNBJJrNBJJrNS	T 	T 	Tr+   c                     | j                  t        d      5  t        j                  t	        j
                  d      t	        j
                  d             d d d        y # 1 sw Y   y xY wr   )r	   r
   r   ige256_decryptr   r   r   s    r   &test_ige256_decrypt_invalid_args_countz6TestIGE256Input.test_ige256_decrypt_invalid_args_count1   r   r   c                     | j                  t        | j                        5  t        j                  ddd       d d d        y # 1 sw Y   y xY wr   )r	   r
   r   r   r1   r   s    r   %test_ige256_decrypt_invalid_args_typez5TestIGE256Input.test_ige256_decrypt_invalid_args_type5   r   r   c                     | j                  t        d      5  t        j                  dt	        j
                  d      t	        j
                  d             d d d        y # 1 sw Y   y xY wr   r	   r"   r   r1   r   r   r   s    r   test_ige256_decrypt_empty_dataz.TestIGE256Input.test_ige256_decrypt_empty_data9   r$   r%   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'   r6   r   s    r   $test_ige256_decrypt_invalid_key_sizez4TestIGE256Input.test_ige256_decrypt_invalid_key_size=   r*   r+   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-   r6   r   s    r   #test_ige256_decrypt_invalid_iv_sizez3TestIGE256Input.test_ige256_decrypt_invalid_iv_sizeA   r/   r+   N)__name__
__module____qualname__r   r   r   r#   r)   r.   r2   r4   r7   r9   r;    r    r   r   r      sB    yD-ITTD-ITTr    r   c                      e Zd ZdZdZdZdZdj                  dd      Z e	e      D ]c  Z
 eej                  dde
 ej                   ej                   d	e      d
z         ej                  e       ej                  e                   e  e	e      D ]c  Z
 eej                  dde
 ej                   ej                   d	e      d
z         ej                  e       ej                  e                   e y)TestIGE256Random@   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ivN)r<   r=   r>   DATA_CHUNK_MAX_SIZEKEY_SIZEIV_SIZETESTS_AMOUNTreplaceTEMPLATErangerH   execformatr   r   randomrandintr?   r    r   rA   rA   F   s   HGL
 	$  |$ 

OORZZq2E F KLBJJx(2::g&  		


 |$ 

OORZZq2E F KLBJJx(2::g&  		


r    rA   __main__)	r   rU   unittestr   TestCaser   rA   r<   mainr?   r    r   <module>r[      sU   & 
   )Th'' )TX)
x(( )
X zHMMO r    