
    ¿ig'                         d dl Z d dlmZmZ d dlmZ d dlmZmZ  G d de j	                  Z
 G d de j	                  Zi fd	Zed
k    rd Z e j        d           dS dS )    N)	unhexlifyhexlify)list_test_cases)strxorstrxor_cc                   \    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S )StrxorTestsc                     t          d          }t          d          }t          d          }|                     t          ||          |           |                     t          ||          |           d S N   ff339a83e5cd4cdf5649   383d4ba020573314395b   c70ed123c59a7fcb6f12)r   assertEqualr   )selfterm1term2results       `/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Util/test_strxor.pytest1zStrxorTests.test1+   sr    122122233u--v666u--v66666    c                 R    d}|                      t          ||          |           d S )Nr   )r   r   )r   ess     r   test2zStrxorTests.test22   s+    B,,,,,r   c                     t          d          }dt          |          z  }|                     t          ||          |           d S )Nr       )r   lenr   r   )r   r   	all_zeross      r   test3zStrxorTests.test36   sF    122c%jj(	u--y99999r   c                     t          d          }t          d          }|                     t          t          ||           d S )Nr   s   ff339a83e5cd4cdf564990)r   assertRaises
ValueErrorr   r   r   r   s      r   test_wrong_lengthzStrxorTests.test_wrong_length;   s>    122344*feU;;;;;r   c                     t          d          }t          |          }t          d          }t          d          }|                     t          ||          |           d S r   )r   	bytearrayr   r   )r   r   term1_bar   r   s        r   test_bytearrayzStrxorTests.test_bytearray@   s_    122U##122233%00&99999r   c                     t          d          }t          |          }t          d          }t          d          }|                     t          ||          |           d S r   )r   
memoryviewr   r   )r   r   term1_mvr   r   s        r   test_memoryviewzStrxorTests.test_memoryviewH   s_    122e$$122233%00&99999r   c                    t          d          }t          d          }|dd         }|dd         }t          d          }t          t          |                    }t          |||          }|                     |d           |                     ||           |                     ||           |                     ||           dS z3Verify result can be stored in pre-allocated memoryr   r   Nr   output)r   r%   r   r   r   r   r   r   original_term1original_term2expected_xorr/   r   s           r   test_output_bytearrayz!StrxorTests.test_output_bytearrayP   s     122122qqqqqq !8993u::&&uV444&&&...////////r   c                    t          d          }t          d          }|dd         }|dd         }t          d          }t          t          t          |                              }t	          |||          }|                     |d           |                     ||           |                     ||           |                     ||           dS r-   )r   r)   r%   r   r   r   r0   s           r   test_output_memoryviewz"StrxorTests.test_output_memoryviewa   s     122122qqqqqq !899Ic%jj1122uV444&&&...////////r   c                 6   t          t          d                    }t          d          }|dd         }t          d          }t          |||          }|                     |d           |                     ||           |                     ||           dS 1Verify result can be stored in overlapping memoryr   r   Nr   r.   )r%   r   r   r   r   r   r   r2   r3   r   s         r   !test_output_overlapping_bytearrayz-StrxorTests.test_output_overlapping_bytearrayr   s     )$;<<==122qqq !899uU333&&&---/////r   c                 P   t          t          t          d                              }t          d          }|dd         }t          d          }t          |||          }|                     |d           |                     ||           |                     ||           dS r8   )r)   r%   r   r   r   r:   s         r   "test_output_overlapping_memoryviewz.StrxorTests.test_output_overlapping_memoryview   s     9Y/F%G%GHHII122qqq !899uU333&&&---/////r   c                     t          d          }t          d          }|                     t          t          |||           dS 2Verify result cannot be stored in read-only memoryr   r   r.   N)r   r    	TypeErrorr   r"   s      r   test_output_ro_bytesz StrxorTests.test_output_ro_bytes   sE     122122)VUE%HHHHHr   c                     t          t          d                    }t          d          }|                     t          t          |||           dS r?   )r)   r   r    rA   r   r"   s      r   test_output_ro_memoryviewz%StrxorTests.test_output_ro_memoryview   sM     9%<==>>122)VUE%HHHHHr   c                     t          d          }t          d          }t          t          |          dz
            }|                     t          t
          |||           dS )<Verify result cannot be stored in memory of incorrect lengthr   r      r.   N)r   r%   r   r    r!   r   )r   r   r   r/   s       r   test_output_incorrect_lengthz(StrxorTests.test_output_incorrect_length   s\     1221223u::>***feU6JJJJJr   N)__name__
__module____qualname__r   r   r   r#   r'   r+   r4   r6   r;   r=   rB   rD   rH    r   r   r	   r	   )   s        7 7 7- - -: : :
< < <
: : :: : :0 0 0"0 0 0"0 0 00 0 0I I II I IK K K K Kr   r	   c                   \    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S )Strxor_cTestsc                     t          d          }t          d          }|                     t          |d          |           d S Nr      be72dbc2a48c0d9e1708A   r   r   r   )r   r   r   s      r   r   zStrxor_cTests.test1   sD    122233%,,f55555r   c                 l    t          d          }|                     t          |d          |           d S )Nr   r   rS   r   r   s     r   r   zStrxor_cTests.test2   s6    122%++U33333r   c                 N    |                      t          dd          d           d S )Nr   Z   )r   r   )r   s    r   r   zStrxor_cTests.test3   s(    #r**C00000r   c                     t          d          }|                     t          t          |d           |                     t          t          |d           d S )Nr      )r   r    r!   r   rU   s     r   test_wrong_rangezStrxor_cTests.test_wrong_range   sJ    122*hr:::*hs;;;;;r   c                     t          d          }t          |          }t          d          }|                     t          |d          |           d S rP   )r   r%   r   r   )r   r   r&   r   s       r   r'   zStrxor_cTests.test_bytearray   sQ    122U##233(B//88888r   c                     t          d          }t          |          }t          d          }|                     t          |d          |           d S rP   )r   r)   r   r   )r   r   r*   r   s       r   r+   zStrxor_cTests.test_memoryview   sQ    122e$$233(B//88888r   c                 6   t          d          }|d d          }t          d          }t          t          |                    }t          |d|          }|                     |d            |                     ||           |                     ||           d S Nr   rQ   rR   r.   )r   r%   r   r   r   r   r   r1   expected_resultr/   r   s         r   r4   z#Strxor_cTests.test_output_bytearray   s    122qqq#$;<<3u::&&%F333&&&111/////r   c                 P   t          d          }|d d          }t          d          }t          t          t          |                              }t	          |d|          }|                     |d            |                     ||           |                     ||           d S r_   )r   r)   r%   r   r   r   r`   s         r   r6   z$Strxor_cTests.test_output_memoryview   s    122qqq#$;<<Ic%jj1122%F333&&&111/////r   c                     t          t          d                    }t          d          }t          |d|          }|                     |d           |                     ||           dS r9   r   rQ   rR   r.   N)r%   r   r   r   r   r   r3   r   s       r   r;   z/Strxor_cTests.test_output_overlapping_bytearray   sn     )$;<<== !899%E222&&&-----r   c                     t          t          t          d                              }t          d          }t          |d|          }|                     |d           |                     ||           dS rd   )r)   r%   r   r   r   re   s       r   r=   z0Strxor_cTests.test_output_overlapping_memoryview   sv     9Y/F%G%GHHII !899%E222&&&-----r   c                 l    t          d          }|                     t          t          |d|           dS )r@   r   rR   r.   N)r   r    rA   r   rU   s     r   rB   z"Strxor_cTests.test_output_ro_bytes   s7     122)XubGGGGGr   c                     t          t          d                    }t          d          }|                     t          t          |d|           dS )r@   r   r   rR   r.   N)r)   r   r    rA   r   r"   s      r   rD   z'Strxor_cTests.test_output_ro_memoryview   sM     9%<==>>122)XubGGGGGr   c                     t          d          }t          t          |          dz
            }|                     t          t
          |d|           dS )rF   r   rG   rR   r.   N)r   r%   r   r    r!   r   )r   r   r/   s      r   rH   z*Strxor_cTests.test_output_incorrect_length  sN     1223u::>***hr&IIIIIr   N)rI   rJ   rK   r   r   r   r[   r'   r+   r4   r6   r;   r=   rB   rD   rH   rL   r   r   rN   rN      s        6 6 6
4 4 41 1 1< < <
9 9 99 9 9
0 
0 
0
0 
0 
0	. 	. 	.	. 	. 	.H H HH H HJ J J J Jr   rN   c                 f    g }|t          t                    z  }|t          t                    z  }|S N)r   r	   rN   )configtestss     r   	get_testsrn     s0    E	_[)))E	_]+++ELr   __main__c                  B    t          j        t                                S rk   )unittest	TestSuitern   rL   r   r   <lambda>rs     s    H&y{{33 r   suite)defaultTest)rq   binasciir   r   Cryptodome.SelfTest.st_commonr   Cryptodome.Util.strxorr   r   TestCaser	   rN   rn   rI   rt   mainrL   r   r   <module>r{      s   D  ' ' ' ' ' ' ' ' 9 9 9 9 9 9 3 3 3 3 3 3 3 3|K |K |K |K |K(# |K |K |K~dJ dJ dJ dJ dJH% dJ dJ dJN      z33EHMg&&&&&& r   