
    Shk$                         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
                     dS dS )    Nc                       e Zd Zd Zd ZdS )TestCTR256NISTc           
         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	          j        |||t          d                    |           d S )	Na
        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        X/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/tests/ctr/test_ctr.pytest_ctr256_encryptz"TestCTR256NIST.test_ctr256_encrypt   s   mm  GCWWT2..0 0
 ]] GCWWT2..0 0 MM #
 GCWWT2..0 0	 ]] $
 GCWWT2..0 0
 	0CU1XXNNPZ[[[[[    c           
         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	          j        |||t          d                    |           d S )	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   mm  GCWWT2..0 0
 ]] GCWWT2..0 0 ]] $
 GCWWT2..0 0
 MM #
 GCWWT2..0 0	 	0S"eAhhOOQZ[[[[[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dS )TestCTR256Cryptographyc           
      F   t                               d          }t                               d          }t                               d          }t                               d          }|                     t          j        |||t          d                    |           d S )N@776BEFF2851DB06F4C8A0542C8696F6C6A81AF1EEC96B4D37FC1D689E6C1C104 00000060DB5672C97AA8F0B200000001 53696E676C6520626C6F636B206D7367 145AD01DBF824EC7560863DC71E3E0C0r   r   r   r   r   r   r   s        r   test_ctr256_encrypt_extra1z1TestCTR256Cryptography.test_ctr256_encrypt_extra1U   s~    mm^__]]=>>MM"DEE	]]#EFF
0CU1XXNNPZ[[[[[r   c           
      F   t                               d          }t                               d          }t                               d          }t                               d          }|                     t          j        |||t          d                    |           d S )N@F6D66D6BD52D59BB0796365879EFF886C66DD51A5B6A99744B50590C87A23884 00FAAC24C1585EF15A43D87500000001@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F@F05E231B3894612C49EE000B804EB2A9B8306B508F839D6A5530831D9344AF1Cr   r+   r   s        r   test_ctr256_encrypt_extra2z1TestCTR256Cryptography.test_ctr256_encrypt_extra2]   s~    mm^__]]=>>MM"dee	]]#eff
0CU1XXNNPZ[[[[[r   c           
      F   t                               d          }t                               d          }t                               d          }t                               d          }|                     t          j        |||t          d                    |           d S )N@FF7A617CE69148E4F1726E2F43581DE2AA62D9F805532EDFF1EED687FB54153D 001CC5B751A51D70A1C1114800000001H000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223HEB6C52821D0BBBF7CE7594462ACA4FAAB407DF866569FD07F48CC0B583D6071F1EC0E6B8r   r+   r   s        r   test_ctr256_encrypt_extra3z1TestCTR256Cryptography.test_ctr256_encrypt_extra3e   s~    mm^__]]=>>MM"lmm	]]#mnn
0CU1XXNNPZ[[[[[r   N)r    r!   r"   r,   r2   r8   r#   r   r   r%   r%   R   sL        \ \ \\ \ \\ \ \ \ \r   r%   c                   f    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dS )TestCTR256Inputz]'\w+' does not (support|have) the buffer interface|a bytes-like object is required, not '\w+'c                    |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d                     d d d            d S # 1 swxY w Y   d S 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       ##I/bcc 	S 	S#BJqMM2:b>>2:b>>RRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S   AA66A:=A:c                     |                      t          | j                  5  t          j        dddd           d d d            d S # 1 swxY w Y   d S Nr            )r@   rA   TYPE_ERROR_PATTERNr   r   rD   s    r   %test_ctr256_encrypt_invalid_args_typez5TestCTR256Input.test_ctr256_encrypt_invalid_args_typeu       ##It/FGG 	0 	0#Aq!Q///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0   AA
A
c           	          |                      t          d          5  t          j        dt	          j        d          t	          j        d          t          d                     d d d            d S # 1 swxY w Y   d S 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       ##J0IJJ 	S 	S#CBBqRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S   A	A22A69A6c           	      "   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          d                     d d d            d S # 1 swxY w Y   d S 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}       ##J0TUU 	] 	]#BJqMM2:b>>2:b>>SXYZS[S[\\\	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	]   ABBBc           	      "   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          d                     d d d            d S # 1 swxY w Y   d S 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       ##J0STT 	] 	]#BJqMM2:b>>2:b>>SXYZS[S[\\\	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	] 	]r]   c           
      &   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          g d                     d d d            d S # 1 swxY w Y   d S 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       ##J0TUU 	e 	e#BJqMM2:b>>2:b>>SXYbYbYbScScddd	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e 	e   ABB
B
c           	      $   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          dg                     d d d            d S # 1 swxY w Y   d S 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       ##J0]^^ 	` 	`#BJqMM2:b>>2:b>>SXZ\Y]S^S^___	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	`   ABB	B	c                    |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d                     d d d            d S # 1 swxY w Y   d S 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                     |                      t          | j                  5  t          j        dddd           d d d            d S # 1 swxY w Y   d S rI   )r@   rA   rM   r   r   rD   s    r   %test_ctr256_decrypt_invalid_args_typez5TestCTR256Input.test_ctr256_decrypt_invalid_args_type   rO   rP   c           	          |                      t          d          5  t          j        dt	          j        d          t	          j        d          t          d                     d d d            d S # 1 swxY w Y   d S 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           	      "   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          d                     d d d            d S # 1 swxY w Y   d S rY   rr   rD   s    r   $test_ctr256_decrypt_invalid_key_sizez4TestCTR256Input.test_ctr256_decrypt_invalid_key_size   r\   r]   c           	      "   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          d                     d d d            d S # 1 swxY w Y   d S r_   rr   rD   s    r   #test_ctr256_decrypt_invalid_iv_sizez3TestCTR256Input.test_ctr256_decrypt_invalid_iv_size   rb   r]   c           
      &   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          g d                     d d d            d S # 1 swxY w Y   d S rd   rr   rD   s    r   &test_ctr256_decrypt_invalid_state_sizez6TestCTR256Input.test_ctr256_decrypt_invalid_state_size   rf   rg   c           	      $   |                      t          d          5  t          j        t	          j        d          t	          j        d          t	          j        d          t          dg                     d d d            d S # 1 swxY w Y   d S 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   s       yS S S0 0 0S S S] ] ]] ] ]e e e` ` `S S S0 0 0S S S] ] ]] ] ]e e e` ` ` ` `r   r:   c                      e Zd ZdZdZdZdZd                    dd          Z e	e          D ]Z
 ee                    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                    d	de
 ej         ej        d
e                     ej        e           e ej        e                     e ej        dd          g                               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	   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}      s       MHGL 	$  |$$ 
 
OORZq- @ @AABJx((9ZRZ0011i2!6!6 788   
	
 
	
 
	
 
	
 |$$ 
 
OORZq- @ @AABJx((9ZRZ0011i2!6!6 788   
	
 
	
 
	
 
	

 
r   r}   __main__)rB   r   unittestr   TestCaser   r%   r:   r}   r    mainr#   r   r   <module>r      s   & 
			   5\ 5\ 5\ 5\ 5\X& 5\ 5\ 5\p\ \ \ \ \X. \ \ \89` 9` 9` 9` 9`h' 9` 9` 9`x.
 .
 .
 .
 .
x( .
 .
 .
b zHMOOOOO r   