o
    ^¨Êh¯  ã                   @   s†   d Z dZddlZejd dkrejd dkrddlT ddlT ddlZG dd„ dejƒZi fd	d
„Z	e
dkrAdd„ Zejdd� dS dS )z"Self-tests for Crypto.Util.Counterz$Id$é    Né   é   )Ú*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 )ÚCounterTestsc                 C   s   ddl ma d S )Nr   )ÚCounter)ÚCrypto.Utilr   )Úself© r	   úS/var/www/html/env/lib/python3.10/site-packages/Crypto/SelfTest/Util/test_Counter.pyÚsetUp%   s   zCounterTests.setUpc                 C   sr   t  d¡}|  |jd¡ t jddd�}|  |jd¡ t jddd�}|  |jd¡ t jdddd�}|  |jd¡ dS )zBig endian, shortcut enabledé€   TF©Úlittle_endian©Údisable_shortcut©r   r   N©r   ÚnewÚassertEqualÚ__PCT_CTR_SHORTCUT__©r   Úcr	   r	   r
   Útest_BE_shortcut)   s   
zCounterTests.test_BE_shortcutc                 C   s>   t jddd�}|  |jd¡ t jdddd�}|  |jd¡ dS )zLittle endian, shortcut enabledr   Tr   Fr   Nr   r   r	   r	   r
   Útest_LE_shortcut4   s   zCounterTests.test_LE_shortcutc                 C   sB   t jddd�}|  tt|d¡ t jdddd�}|  tt|d¡ dS )zBig endian, shortcut disabledr   Tr   r   Fr   N©r   r   ÚassertRaisesÚAttributeErrorÚgetattrr   r	   r	   r
   Útest_BE_no_shortcut;   s   z CounterTests.test_BE_no_shortcutc                 C   s$   t jdddd�}|  tt|d¡ dS )z Little endian, shortcut disabledr   Tr   r   Nr   r   r	   r	   r
   Útest_LE_no_shortcutB   s   z CounterTests.test_LE_no_shortcutc                 C   s®   t  d¡}|  d| ¡ ¡ |  tdƒ|ƒ ¡ |  d| ¡ ¡ |  tdƒ|ƒ ¡ tddƒD ]}|  || ¡ ¡ |  tdƒt|ƒ |ƒ ¡ q,|  d| ¡ ¡ |  td	ƒ|ƒ ¡ d
S )z128-bit, Big endian, defaultsr   r   z               r   z               é   é   ú               z               N©r   r   r   Ú
next_valueÚbÚrangeÚbchr©r   r   Úir	   r	   r
   Útest_BE_defaultsG   s   
zCounterTests.test_BE_defaultsc                 C   s²   t jddd�}|  d| ¡ ¡ |  tdƒ|ƒ ¡ |  d| ¡ ¡ |  tdƒ|ƒ ¡ tdd	ƒD ]}|  || ¡ ¡ |  t|ƒtd
ƒ |ƒ ¡ q.|  d	| ¡ ¡ |  tdƒ|ƒ ¡ dS )z 128-bit, Little endian, defaultsr   Tr   r   z               r   z               r    r!   r"   z               Nr#   r(   r	   r	   r
   Útest_LE_defaultsT   s   zCounterTests.test_LE_defaultsc                 C   st   t  d¡}tddƒD ]}|  || ¡ ¡ |  t|ƒ|ƒ ¡ q
|  t|j¡ |  t|¡ |  t|j¡ |  t|¡ dS )z8-bit, Big endian, wraparoundé   r   r!   N©r   r   r&   r   r$   r'   r   ÚOverflowErrorr(   r	   r	   r
   Útest_BE8_wraparounda   s   
z CounterTests.test_BE8_wraparoundc                 C   sx   t jddd�}tddƒD ]}|  || ¡ ¡ |  t|ƒ|ƒ ¡ q|  t|j¡ |  t|¡ |  t|j¡ |  t|¡ dS )z 8-bit, Little endian, wraparoundr,   Tr   r   r!   Nr-   r(   r	   r	   r
   Útest_LE8_wraparoundl   s   z CounterTests.test_LE8_wraparoundc                 C   sv   t jddd�}tddƒD ]}|  || ¡ ¡ |  t|ƒ|ƒ ¡ q|  d| ¡ ¡ |  tdƒ|ƒ ¡ |  d| ¡ ¡ dS )	z88-bit, Big endian, wraparound with allow_wraparound=Truer,   T)Úallow_wraparoundr   r!   r   ú N©r   r   r&   r   r$   r'   r%   r(   r	   r	   r
   Útest_BE8_wraparound_allowedw   s   z(CounterTests.test_BE8_wraparound_allowedc                 C   sx   t jdddd�}tddƒD ]}|  || ¡ ¡ |  t|ƒ|ƒ ¡ q|  d| ¡ ¡ |  tdƒ|ƒ ¡ |  d| ¡ ¡ dS )	z;8-bit, Little endian, wraparound with allow_wraparound=Truer,   T)r   r1   r   r!   r   r2   Nr3   r(   r	   r	   r
   Útest_LE8_wraparound_allowed�   s   z(CounterTests.test_LE8_wraparound_allowedc                 C   s\   t  d¡}tddƒD ]}|  d|j¡ |  || ¡ ¡ |  t|ƒ|ƒ ¡ q
|  d|j¡ dS )z"8-bit, Big endian, carry attributer,   r   r!   r   N©r   r   r&   r   Úcarryr$   r'   r(   r	   r	   r
   Útest_BE8_carry‹   s   
zCounterTests.test_BE8_carryc                 C   s`   t jddd�}tddƒD ]}|  d|j¡ |  || ¡ ¡ |  t|ƒ|ƒ ¡ q|  d|j¡ dS )z%8-bit, Little endian, carry attributer,   Tr   r   r!   r   Nr6   r(   r	   r	   r
   Útest_LE8_carry”   s   zCounterTests.test_LE8_carryN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r*   r+   r/   r0   r4   r5   r8   r9   r	   r	   r	   r
   r   $   s    

	r   c                 C   s   ddl m} |tƒS )Nr   )Úlist_test_cases)ÚCrypto.SelfTest.st_commonr=   r   )Úconfigr=   r	   r	   r
   Ú	get_tests�   s   r@   Ú__main__c                   C   s   t  tƒ ¡S )N)ÚunittestÚ	TestSuiter@   r	   r	   r	   r
   Ú<lambda>¢   s    rD   Úsuite)ÚdefaultTest)Ú__doc__Ú__revision__ÚsysÚversion_infoÚCrypto.Util.py21compatÚCrypto.Util.py3compatrB   ÚTestCaser   r@   r:   rE   Úmainr	   r	   r	   r
   Ú<module>   s   yþ