B
    i’»dï  ã               @   sX   d dl Z d dlZd dlZd dlZG dd„ dejƒZG dd„ dejƒZedkrTe ¡  dS )é    Nc               @   s`   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestIGE256Inputz]'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'c          	   C   s4   |   td¡ t t d¡t d¡¡ W d Q R X d S )Nz0function takes exactly \d arguments \(\d given\)é   é    )ÚassertRaisesRegexÚ	TypeErrorÚtgcryptoÚige256_encryptÚosÚurandom)Úself© r   ú6/tmp/pip-unpacked-wheel-rb8agyfe/tests/ige/test_ige.pyÚ&test_ige256_encrypt_invalid_args_count   s    z6TestIGE256Input.test_ige256_encrypt_invalid_args_countc          	   C   s,   |   t| j¡ t ddd¡ W d Q R X d S )Né   é   é   )r   r   ÚTYPE_ERROR_PATTERNr   r   )r   r   r   r   Ú%test_ige256_encrypt_invalid_args_type!   s    z5TestIGE256Input.test_ige256_encrypt_invalid_args_typec          	   C   s6   |   td¡  t dt d¡t d¡¡ W d Q R X d S )NzData must not be emptyó    r   )r   Ú
ValueErrorr   r   r	   r
   )r   r   r   r   Útest_ige256_encrypt_empty_data%   s    z.TestIGE256Input.test_ige256_encrypt_empty_datac          	   C   s<   |   td¡& t t d¡t d¡t d¡¡ W d Q R X d S )Nz!Key size must be exactly 32 bytesr   é   r   )r   r   r   r   r	   r
   )r   r   r   r   Ú$test_ige256_encrypt_invalid_key_size)   s    z4TestIGE256Input.test_ige256_encrypt_invalid_key_sizec          	   C   s<   |   td¡& t t d¡t d¡t d¡¡ W d Q R X d S )Nz IV size must be exactly 32 bytesr   r   r   )r   r   r   r   r	   r
   )r   r   r   r   Ú#test_ige256_encrypt_invalid_iv_size-   s    z3TestIGE256Input.test_ige256_encrypt_invalid_iv_sizec          	   C   s4   |   td¡ t t d¡t d¡¡ W d Q R X d S )Nz0function takes exactly \d arguments \(\d given\)r   r   )r   r   r   Úige256_decryptr	   r
   )r   r   r   r   Ú&test_ige256_decrypt_invalid_args_count1   s    z6TestIGE256Input.test_ige256_decrypt_invalid_args_countc          	   C   s,   |   t| j¡ t ddd¡ W d Q R X d S )Nr   r   r   )r   r   r   r   r   )r   r   r   r   Ú%test_ige256_decrypt_invalid_args_type5   s    z5TestIGE256Input.test_ige256_decrypt_invalid_args_typec          	   C   s6   |   td¡  t dt d¡t d¡¡ W d Q R X d S )NzData must not be emptyr   r   )r   r   r   r   r	   r
   )r   r   r   r   Útest_ige256_decrypt_empty_data9   s    z.TestIGE256Input.test_ige256_decrypt_empty_datac          	   C   s<   |   td¡& t t d¡t d¡t d¡¡ W d Q R X d S )Nz!Key size must be exactly 32 bytesr   r   r   )r   r   r   r   r	   r
   )r   r   r   r   Ú$test_ige256_decrypt_invalid_key_size=   s    z4TestIGE256Input.test_ige256_decrypt_invalid_key_sizec          	   C   s<   |   td¡& t t d¡t d¡t d¡¡ W d Q R X d S )Nz IV size must be exactly 32 bytesr   r   r   )r   r   r   r   r	   r
   )r   r   r   r   Ú#test_ige256_decrypt_invalid_iv_sizeA   s    z3TestIGE256Input.test_ige256_decrypt_invalid_iv_sizeN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   r   c               @   s¼   e Zd ZdZdZdZdZd dd¡ZxHe	eƒD ]<Z
eejdde
e e d	e¡d
 ¡e e¡e e¡dƒ q.W xHe	eƒD ]<Z
eejdde
e e d	e¡d
 ¡e e¡e e¡dƒ qxW dS )Ú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
    Ú
ZencryptZdecryptr   r   )Zmode1Zmode2ÚcountÚdataÚkeyZivN)r    r!   r"   ZDATA_CHUNK_MAX_SIZEZKEY_SIZEZIV_SIZEZTESTS_AMOUNTÚreplaceÚTEMPLATEÚranger&   ÚexecÚformatr	   r
   ÚrandomÚrandintr   r   r   r   r#   F   s.   r#   Ú__main__)	r	   r.   Zunittestr   ZTestCaser   r#   r    Úmainr   r   r   r   Ú<module>   s   ,,