B
    _e'                 @   s   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 de j	Z
G dd de j	Zi fd	d
Zedkrdd Ze jdd dS )    N)	unhexlifyhexlify)list_test_cases)strxorstrxor_cc               @   st   e 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S )StrxorTestsc             C   s@   t d}t d}t d}| t||| | t||| d S )Ns   ff339a83e5cd4cdf5649s   383d4ba020573314395bs   c70ed123c59a7fcb6f12)r   assertEqualr   )selfterm1term2result r   c/var/www/html/afkarena_new/venv/lib/python3.7/site-packages/Cryptodome/SelfTest/Util/test_strxor.pytest1+   s
    zStrxorTests.test1c             C   s   d}|  t||| d S )N    )r   r   )r	   esr   r   r   test22   s    zStrxorTests.test2c             C   s*   t d}dt| }| t||| d S )Ns   ff339a83e5cd4cdf5649    )r   lenr   r   )r	   r
   Z	all_zerosr   r   r   test36   s    zStrxorTests.test3c             C   s$   t d}t d}| tt|| d S )Ns   ff339a83e5cd4cdf5649s   ff339a83e5cd4cdf564990)r   assertRaises
ValueErrorr   )r	   r
   r   r   r   r   test_wrong_length;   s    zStrxorTests.test_wrong_lengthc             C   s6   t d}t|}t d}t d}| t||| d S )Ns   ff339a83e5cd4cdf5649s   383d4ba020573314395bs   c70ed123c59a7fcb6f12)r   	bytearrayr   r   )r	   r
   term1_bar   r   r   r   r   test_bytearray@   s
    zStrxorTests.test_bytearrayc             C   s6   t d}t|}t d}t d}| t||| d S )Ns   ff339a83e5cd4cdf5649s   383d4ba020573314395bs   c70ed123c59a7fcb6f12)r   
memoryviewr   r   )r	   r
   term1_mvr   r   r   r   r   test_memoryviewH   s
    zStrxorTests.test_memoryviewc             C   s~   t d}t d}|dd }|dd }t d}tt|}t|||d}| |d | || | || | || dS )z3Verify result can be stored in pre-allocated memorys   ff339a83e5cd4cdf5649s   383d4ba020573314395bNs   c70ed123c59a7fcb6f12)output)r   r   r   r   r   )r	   r
   r   original_term1original_term2expected_xorr   r   r   r   r   test_output_bytearrayP   s    z!StrxorTests.test_output_bytearrayc             C   s   t d}t d}|dd }|dd }t d}ttt|}t|||d}| |d | || | || | || dS )z3Verify result can be stored in pre-allocated memorys   ff339a83e5cd4cdf5649s   383d4ba020573314395bNs   c70ed123c59a7fcb6f12)r   )r   r   r   r   r   r   )r	   r
   r   r    r!   r"   r   r   r   r   r   test_output_memoryviewa   s    z"StrxorTests.test_output_memoryviewc             C   s^   t td}td}|dd }td}t|||d}| |d | || | || dS )z1Verify result can be stored in overlapping memorys   ff339a83e5cd4cdf5649s   383d4ba020573314395bNs   c70ed123c59a7fcb6f12)r   )r   r   r   r   )r	   r
   r   r!   r"   r   r   r   r   !test_output_overlapping_bytearrayr   s    z-StrxorTests.test_output_overlapping_bytearrayc             C   sb   t ttd}td}|dd }td}t|||d}| |d | || | || dS )z1Verify result can be stored in overlapping memorys   ff339a83e5cd4cdf5649s   383d4ba020573314395bNs   c70ed123c59a7fcb6f12)r   )r   r   r   r   r   )r	   r
   r   r!   r"   r   r   r   r   "test_output_overlapping_memoryview   s    z.StrxorTests.test_output_overlapping_memoryviewc             C   s(   t d}t d}| jtt|||d dS )z2Verify result cannot be stored in read-only memorys   ff339a83e5cd4cdf5649s   383d4ba020573314395b)r   N)r   r   	TypeErrorr   )r	   r
   r   r   r   r   test_output_ro_bytes   s    z StrxorTests.test_output_ro_bytesc             C   s,   t td}td}| jtt|||d dS )z2Verify result cannot be stored in read-only memorys   ff339a83e5cd4cdf5649s   383d4ba020573314395b)r   N)r   r   r   r'   r   )r	   r
   r   r   r   r   test_output_ro_memoryview   s    z%StrxorTests.test_output_ro_memoryviewc             C   s8   t d}t d}tt|d }| jtt|||d dS )z<Verify result cannot be stored in memory of incorrect lengths   ff339a83e5cd4cdf5649s   383d4ba020573314395b   )r   N)r   r   r   r   r   r   )r	   r
   r   r   r   r   r   test_output_incorrect_length   s    z(StrxorTests.test_output_incorrect_lengthN)__name__
__module____qualname__r   r   r   r   r   r   r#   r$   r%   r&   r(   r)   r+   r   r   r   r   r   )   s   r   c               @   st   e 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S )Strxor_cTestsc             C   s&   t d}t d}| t|d| d S )Ns   ff339a83e5cd4cdf5649s   be72dbc2a48c0d9e1708A   )r   r   r   )r	   r
   r   r   r   r   r      s    zStrxor_cTests.test1c             C   s   t d}| t|d| d S )Ns   ff339a83e5cd4cdf5649r   )r   r   r   )r	   r
   r   r   r   r      s    zStrxor_cTests.test2c             C   s   |  tddd d S )Nr   Z   )r   r   )r	   r   r   r   r      s    zStrxor_cTests.test3c             C   s,   t d}| tt|d | tt|d d S )Ns   ff339a83e5cd4cdf5649   )r   r   r   r   )r	   r
   r   r   r   test_wrong_range   s    zStrxor_cTests.test_wrong_rangec             C   s.   t d}t|}t d}| t|d| d S )Ns   ff339a83e5cd4cdf5649s   be72dbc2a48c0d9e1708r0   )r   r   r   r   )r	   r
   r   r   r   r   r   r      s    zStrxor_cTests.test_bytearrayc             C   s.   t d}t|}t d}| t|d| d S )Ns   ff339a83e5cd4cdf5649s   be72dbc2a48c0d9e1708r0   )r   r   r   r   )r	   r
   r   r   r   r   r   r      s    zStrxor_cTests.test_memoryviewc             C   s^   t d}|d d  }t d}tt|}t|d|d}| |d  | || | || d S )Ns   ff339a83e5cd4cdf5649s   be72dbc2a48c0d9e1708r0   )r   )r   r   r   r   r   )r	   r
   r    expected_resultr   r   r   r   r   r#      s    z#Strxor_cTests.test_output_bytearrayc             C   sb   t d}|d d  }t d}ttt|}t|d|d}| |d  | || | || d S )Ns   ff339a83e5cd4cdf5649s   be72dbc2a48c0d9e1708r0   )r   )r   r   r   r   r   r   )r	   r
   r    r5   r   r   r   r   r   r$      s    z$Strxor_cTests.test_output_memoryviewc             C   s>   t td}td}t|d|d}| |d | || dS )z1Verify result can be stored in overlapping memorys   ff339a83e5cd4cdf5649s   be72dbc2a48c0d9e1708r0   )r   N)r   r   r   r   )r	   r
   r"   r   r   r   r   r%      s
    z/Strxor_cTests.test_output_overlapping_bytearrayc             C   sB   t ttd}td}t|d|d}| |d | || dS )z1Verify result can be stored in overlapping memorys   ff339a83e5cd4cdf5649s   be72dbc2a48c0d9e1708r0   )r   N)r   r   r   r   r   )r	   r
   r"   r   r   r   r   r&      s
    z0Strxor_cTests.test_output_overlapping_memoryviewc             C   s    t d}| jtt|d|d dS )z2Verify result cannot be stored in read-only memorys   ff339a83e5cd4cdf5649r0   )r   N)r   r   r'   r   )r	   r
   r   r   r   r(      s    z"Strxor_cTests.test_output_ro_bytesc             C   s,   t td}td}| jtt|d|d dS )z2Verify result cannot be stored in read-only memorys   ff339a83e5cd4cdf5649s   383d4ba020573314395br0   )r   N)r   r   r   r'   r   )r	   r
   r   r   r   r   r)      s    z'Strxor_cTests.test_output_ro_memoryviewc             C   s0   t d}tt|d }| jtt|d|d dS )z<Verify result cannot be stored in memory of incorrect lengths   ff339a83e5cd4cdf5649r*   r0   )r   N)r   r   r   r   r   r   )r	   r
   r   r   r   r   r+     s    z*Strxor_cTests.test_output_incorrect_lengthN)r,   r-   r.   r   r   r   r4   r   r   r#   r$   r%   r&   r(   r)   r+   r   r   r   r   r/      s   r/   c             C   s    g }|t t7 }|t t7 }|S )N)r   r   r/   )configtestsr   r   r   	get_tests  s    r8   __main__c               C   s   t t S )N)unittestZ	TestSuiter8   r   r   r   r   <lambda>  r   r;   suite)ZdefaultTest)r:   binasciir   r   ZCryptodome.SelfTest.st_commonr   ZCryptodome.Util.strxorr   r   ZTestCaser   r/   r8   r,   r<   mainr   r   r   r   <module>"   s   g