U
    ç;ãgk$  ã                   @   s|   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G dd„ dejƒZG dd	„ d	ejƒZe	d
krxe 
¡  dS )é    Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestCTR256NISTc              	   C   sˆ   t  d dd¡ dd¡¡}t  d dd¡ dd¡¡}t  d dd¡ dd¡¡}t  d dd¡ dd¡¡}|  t |||t dƒ¡|¡ d S )	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Ú
ciphertext© r   úR/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/tests/ctr/test_ctr.pyÚtest_ctr256_encrypt   s:     ý ý þ þ û û û ûz"TestCTR256NIST.test_ctr256_encryptc              	   C   sˆ   t  d dd¡ dd¡¡}t  d dd¡ dd¡¡}t  d dd¡ dd¡¡}t  d dd¡ dd¡¡}|  t |||t dƒ¡|¡ d S )	Nr   r   r   r   r   r	   r   r
   )r   r   r   r   r   Úctr256_decrypt)r   r   r   r   r   r   r   r   Útest_ctr256_decrypt7   s:     ý ý þ þ û û û ûz"TestCTR256NIST.test_ctr256_decryptN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s   r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCTR256Cryptographyc              	   C   sH   t  d¡}t  d¡}t  d¡}t  d¡}|  t |||t dƒ¡|¡ d S )NZ@776BEFF2851DB06F4C8A0542C8696F6C6A81AF1EEC96B4D37FC1D689E6C1C104Z 00000060DB5672C97AA8F0B200000001Z 53696E676C6520626C6F636B206D7367Z 145AD01DBF824EC7560863DC71E3E0C0r
   ©r   r   r   r   r   r   r   r   r   Útest_ctr256_encrypt_extra1U   s
    



z1TestCTR256Cryptography.test_ctr256_encrypt_extra1c              	   C   sH   t  d¡}t  d¡}t  d¡}t  d¡}|  t |||t dƒ¡|¡ d S )NZ@F6D66D6BD52D59BB0796365879EFF886C66DD51A5B6A99744B50590C87A23884Z 00FAAC24C1585EF15A43D87500000001Z@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1FZ@F05E231B3894612C49EE000B804EB2A9B8306B508F839D6A5530831D9344AF1Cr
   r    r   r   r   r   Útest_ctr256_encrypt_extra2]   s
    



z1TestCTR256Cryptography.test_ctr256_encrypt_extra2c              	   C   sH   t  d¡}t  d¡}t  d¡}t  d¡}|  t |||t dƒ¡|¡ d S )NZ@FF7A617CE69148E4F1726E2F43581DE2AA62D9F805532EDFF1EED687FB54153DZ 001CC5B751A51D70A1C1114800000001ZH000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223ZHEB6C52821D0BBBF7CE7594462ACA4FAAB407DF866569FD07F48CC0B583D6071F1EC0E6B8r
   r    r   r   r   r   Útest_ctr256_encrypt_extra3e   s
    



z1TestCTR256Cryptography.test_ctr256_encrypt_extra3N)r   r   r   r!   r"   r#   r   r   r   r   r   R   s   r   c                   @   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d„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestCTR256Inputz]'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'c              	   C   s<   |   td¡& t t d¡t d¡t d¡¡ W 5 Q R X d S ©Nz0function takes exactly \d arguments \(\d given\)é   é    é   )ÚassertRaisesRegexÚ	TypeErrorr   r   ÚosÚurandom©r   r   r   r   Ú&test_ctr256_encrypt_invalid_args_countq   s    z6TestCTR256Input.test_ctr256_encrypt_invalid_args_countc              	   C   s.   |   t| j¡ t dddd¡ W 5 Q R X d S ©Nr
   é   é   é   )r)   r*   ÚTYPE_ERROR_PATTERNr   r   r-   r   r   r   Ú%test_ctr256_encrypt_invalid_args_typeu   s    z5TestCTR256Input.test_ctr256_encrypt_invalid_args_typec              	   C   s<   |   td¡& t dt d¡t d¡tdƒ¡ W 5 Q R X d S ©NzData must not be emptyó    r'   r(   r
   ©r)   Ú
ValueErrorr   r   r+   r,   r   r-   r   r   r   Útest_ctr256_encrypt_empty_datay   s    z.TestCTR256Input.test_ctr256_encrypt_empty_datac              	   C   sB   |   td¡, t t d¡t d¡t d¡tdƒ¡ W 5 Q R X d S ©Nz!Key size must be exactly 32 bytesr&   é   r(   r
   r7   r-   r   r   r   Ú$test_ctr256_encrypt_invalid_key_size}   s    z4TestCTR256Input.test_ctr256_encrypt_invalid_key_sizec              	   C   sB   |   td¡, t t d¡t d¡t d¡tdƒ¡ W 5 Q R X d S ©Nz IV size must be exactly 16 bytesr&   r'   é   r
   r7   r-   r   r   r   Ú#test_ctr256_encrypt_invalid_iv_size   s    z3TestCTR256Input.test_ctr256_encrypt_invalid_iv_sizec              
   C   sH   |   td¡2 t t d¡t d¡t d¡tdddgƒ¡ W 5 Q R X d S ©Nz!State size must be exactly 1 byter&   r'   r(   r
   r0   r1   r7   r-   r   r   r   Ú&test_ctr256_encrypt_invalid_state_size…   s    z6TestCTR256Input.test_ctr256_encrypt_invalid_state_sizec              	   C   sD   |   td¡. t t d¡t d¡t d¡tdgƒ¡ W 5 Q R X d S ©Nz*State value must be in the range \[0, 15\]r&   r'   r(   r7   r-   r   r   r   Ú'test_ctr256_encrypt_invalid_state_value‰   s    z7TestCTR256Input.test_ctr256_encrypt_invalid_state_valuec              	   C   s<   |   td¡& t t d¡t d¡t d¡¡ W 5 Q R X d S r%   )r)   r*   r   r   r+   r,   r-   r   r   r   Ú&test_ctr256_decrypt_invalid_args_count   s    z6TestCTR256Input.test_ctr256_decrypt_invalid_args_countc              	   C   s.   |   t| j¡ t dddd¡ W 5 Q R X d S r/   )r)   r*   r3   r   r   r-   r   r   r   Ú%test_ctr256_decrypt_invalid_args_type‘   s    z5TestCTR256Input.test_ctr256_decrypt_invalid_args_typec              	   C   s<   |   td¡& t dt d¡t d¡tdƒ¡ W 5 Q R X d S r5   ©r)   r8   r   r   r+   r,   r   r-   r   r   r   Útest_ctr256_decrypt_empty_data•   s    z.TestCTR256Input.test_ctr256_decrypt_empty_datac              	   C   sB   |   td¡, t t d¡t d¡t d¡tdƒ¡ W 5 Q R X d S r:   rF   r-   r   r   r   Ú$test_ctr256_decrypt_invalid_key_size™   s    z4TestCTR256Input.test_ctr256_decrypt_invalid_key_sizec              	   C   sB   |   td¡, t t d¡t d¡t d¡tdƒ¡ W 5 Q R X d S r=   rF   r-   r   r   r   Ú#test_ctr256_decrypt_invalid_iv_size   s    z3TestCTR256Input.test_ctr256_decrypt_invalid_iv_sizec              
   C   sH   |   td¡2 t t d¡t d¡t d¡tdddgƒ¡ W 5 Q R X d S r@   rF   r-   r   r   r   Ú&test_ctr256_decrypt_invalid_state_size¡   s    z6TestCTR256Input.test_ctr256_decrypt_invalid_state_sizec              	   C   sD   |   td¡. t t d¡t d¡t d¡tdgƒ¡ W 5 Q R X d S rB   rF   r-   r   r   r   Ú'test_ctr256_decrypt_invalid_state_value¥   s    z7TestCTR256Input.test_ctr256_decrypt_invalid_state_valueN)r   r   r   r3   r.   r4   r9   r<   r?   rA   rC   rD   rE   rG   rH   rI   rJ   rK   r   r   r   r   r$   n   s   r$   c                   @   sÔ   e Zd ZdZdZdZdZd dd¡Ze	eƒD ]LZ
eejdd	e
e e d
e¡¡e e¡ee e¡ƒee dd¡gƒdƒ q,e	eƒD ]LZ
eejd	de
e e d
e¡¡e e¡ee e¡ƒee dd¡gƒdƒ q‚dS )Ú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   ZencryptZdecryptr
   r   r>   )Zmode1Zmode2ÚcountÚdatar   r   ÚstateN)r   r   r   ZDATA_MAX_SIZEZKEY_SIZEZIV_SIZEZTESTS_AMOUNTr   ÚTEMPLATEÚrangerM   ÚexecÚformatr+   r,   ÚrandomÚrandintÚ	bytearrayr   r   r   r   rL   ª   s@    óùÿùÿrL   Ú__main__)r+   rT   Zunittestr   ZTestCaser   r   r$   rL   r   Úmainr   r   r   r   Ú<module>   s   8<1