B
    _£e,z  ã               @   s  d Z ddlZddlT ddlmZmZmZmZmZm	Z	m
Z
mZm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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G dd„ dejƒZi fdd„Zedkrdd„ Zejdd dS )z#Self-tests for Cryptodome.Util.asn1é    N)Ú*)	Ú	DerObjectÚDerSetOfÚ
DerIntegerÚDerBitStringÚDerObjectIdÚDerNullÚDerOctetStringÚDerSequenceÚ
DerBooleanc               @   s|   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d„ ZdS )ÚDerObjectTestsc             C   s$   |   tttdƒ¡ |   ttd¡ d S )Nu    Â™é   )ÚassertRaisesÚ
ValueErrorr   Úb)Úself© r   úa/var/www/html/afkarena_new/venv/lib/python3.7/site-packages/Cryptodome/SelfTest/Util/test_asn1.pyÚtestObjInit1.   s    zDerObjectTests.testObjInit1c             C   s    t tdƒƒ}|  | ¡ tdƒ¡ tdƒ|_|  | ¡ tdƒ¡ |  | ¡ tdƒ¡ t dƒ}tdƒ|_|  | ¡ tdƒ¡ t tdƒdd	}|  | ¡ td
ƒ¡ d S )Núz ÚEzEé   zEúT)Úconstructedz0 )r   r   ÚassertEqualÚencodeÚpayload)r   Úderr   r   r   ÚtestObjEncode16   s    

zDerObjectTests.testObjEncode1c             C   s&   t dtdƒƒ}|  | ¡ tdƒ¡ d S )Né   zz)r   r   r   r   )r   r   r   r   r   ÚtestObjEncode2G   s    zDerObjectTests.testObjEncode2c             C   s2   t tdƒƒ}tdƒd |_|  | ¡ tdƒ¡ d S )Nr   Ú0é€   u…   ÂÂ€00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)r   r   r   r   r   )r   r   r   r   r   ÚtestObjEncode3L   s    zDerObjectTests.testObjEncode3c             C   s\   t dddd}tdƒ|_|  | ¡ tdƒ¡ t ddd	d}tdƒ|_|  | ¡ td
ƒ¡ d S )Né   é   T)Úimplicitr   Zppllu   Â¡ppllé   é   Fu   Âžppll)r   r   r   r   r   )r   r   r   r   r   ÚtestObjEncode4R   s    

zDerObjectTests.testObjEncode4c             C   s.   t ddd}tdƒ|_|  | ¡ tdƒ¡ d S )Nr$   é   )ÚexplicitÚxxllu	   Â¥xxll)r   r   r   r   r   )r   r   r   r   r   ÚtestObjEncode5\   s    
zDerObjectTests.testObjEncode5c             C   s:   t dƒ}| tdƒ¡ |  |jtdƒ¡ |  |jd¡ d S )Nr'   zz)r   Údecoder   r   r   Ú
_tag_octet)r   r   r   r   r   ÚtestObjDecode1d   s    zDerObjectTests.testObjDecode1c             C   s>   t dƒ}| tdƒ¡ |  |jtdƒd ¡ |  |jd¡ d S )Nr'   u…   ÂÂ€11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111Ú1r"   )r   r.   r   r   r   r/   )r   r   r   r   r   ÚtestObjDecode2k   s    zDerObjectTests.testObjDecode2c             C   s<   t dƒ}|  t|jtdƒ¡ t dƒ}|  t|jtdƒ¡ d S )Nr'   u   Ã¿z)r   r   r   r.   r   )r   r   r   r   r   ÚtestObjDecode3r   s    zDerObjectTests.testObjDecode3c             C   sˆ   t dddd}|  t|jtdƒ¡ | tdƒ¡ |  |jtdƒ¡ t dddd}|  t|jtdƒ¡ | td	ƒ¡ |  |jtdƒ¡ d S )
Nr'   Fé   )r   r&   zu   Â ú Tu   Â¯ )r   r   r   r.   r   r   r   )r   r   r   r   r   ÚtestObjDecode4z   s    zDerObjectTests.testObjDecode4c             C   s    t dƒ}|  t|jtdƒ¡ d S )Nr'   z)r   r   r   r.   r   )r   r   r   r   r   ÚtestObjDecode5†   s    zDerObjectTests.testObjDecode5c             C   s8   t ƒ }| tdƒ¡ |  |jd¡ |  |jtdƒ¡ d S )Nu   eÂˆée   õ   Âˆ)r   r.   r   r   r/   r   )r   r   r   r   r   ÚtestObjDecode6‹   s    zDerObjectTests.testObjDecode6c             C   sx   t ddd}| tdƒ¡ |  |jd¡ |  |jtdƒ¡ t ddd}| tdƒ¡ |  |jd¡ |  |jtdƒ¡ d S )Nr$   r*   )r+   u	   Â¥xxllr,   r   u	   Â xxll)r   r.   r   r   Z_inner_tag_octetr   )r   r   r   r   r   ÚtestObjDecode7’   s    zDerObjectTests.testObjDecode7c             C   s"   t dƒ}|  || tdƒ¡¡ d S )Nr'   z)r   r   r.   r   )r   r   r   r   r   ÚtestObjDecode8Ÿ   s    zDerObjectTests.testObjDecode8N)Ú__name__Ú
__module__Ú__qualname__r   r   r    r#   r)   r-   r0   r2   r3   r6   r7   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 )ÚDerIntegerTestsc             C   s    t dƒ}|  | ¡ tdƒ¡ d S )Nr%   z)r   r   r   r   )r   r   r   r   r   Ú	testInit1¦   s    zDerIntegerTests.testInit1c             C   sX   t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ d S )Nr   z r%   zé   z)r   r   r   r   )r   r   r   r   r   ÚtestEncode1ª   s    zDerIntegerTests.testEncode1c             C   sì   t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ t dd ƒ}|  | ¡ tdƒtdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ td	ƒ ¡ d S )
Nr"   u    Â€i€  u   Â€r'   i   u   Â‚         z              z	         )r   r   r   r   )r   r   r   r   r   ÚtestEncode2¶   s    
ŽzDerIntegerTests.testEncode2c             C   sX   t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ d S )Néÿÿÿÿu   Ã¿i€ÿÿÿu   Â€i¿¨þÿu   Ã¾Â¨Â¿)r   r   r   r   )r   r   r   r   r   ÚtestEncode3Õ   s    zDerIntegerTests.testEncode3c             C   s$   t ddd}|  | ¡ tdƒ¡ d S )Né4   r   )r+   u   Â£4)r   r   r   r   )r   Únumberr   r   r   ÚtestEncode4á   s    zDerIntegerTests.testEncode4c             C   s^   t ƒ }| tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ d S )Nz r   zr%   zrB   )r   r.   r   r   Úvalue)r   r   r   r   r   ÚtestDecode1è   s    zDerIntegerTests.testDecode1c             C   sÖ   t ƒ }| tdƒ¡ |  |jd¡ | tdƒtdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ ¡ |  |jdd ¡ d S )Nu   Â€i€  u   Â‚         z              z	         r'   i   )r   r.   r   r   rJ   )r   r   r   r   r   ÚtestDecode2õ   s    ŽzDerIntegerTests.testDecode2c             C   sB   t ƒ }| tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ d S )Nu   Ã¿rE   u   Â€ i €ÿÿ)r   r.   r   r   rJ   )r   r   r   r   r   ÚtestDecode3  s
    zDerIntegerTests.testDecode3c             C   s^   t ƒ }| tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ d S )Nz r%   u   Ã¿Ã¿rE   z r   )r   r.   r   r   rJ   )r   r   r   r   r   ÚtestDecode5  s    zDerIntegerTests.testDecode5c             C   s*   t dd}| tdƒ¡ |  |jd¡ d S )Nr   )r+   u   Â£4rG   )r   r.   r   r   rJ   )r   rH   r   r   r   ÚtestDecode6)  s    
zDerIntegerTests.testDecode6c             C   s    t ƒ }|  || tdƒ¡¡ d S )Nz)r   r   r.   r   )r   r   r   r   r   ÚtestDecode7/  s    zDerIntegerTests.testDecode7c             C   sF   t ƒ }| d¡ | d¡ | jt|jddd | jt|jddd d S )Ns    s    T)Ústrict)r   r.   r   r   )r   rH   r   r   r   ÚtestStrict16  s
    

zDerIntegerTests.testStrict1c             C   s   t ƒ }|  t|jtdƒ¡ d S )Nu   Â)r   r   r   r.   r   )r   r   r   r   r   ÚtestErrDecode1@  s    zDerIntegerTests.testErrDecode1N)r=   r>   r?   rA   rC   rD   rF   rI   rK   rL   rM   rN   rO   rP   rR   rS   r   r   r   r   r@   ¤   s   

r@   c               @   s´   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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 ),ÚDerSequenceTestsc             C   s.   t dtdƒtdƒgƒ}|  | ¡ tdƒ¡ d S )Nr%   r'   z0 z
00 )r
   r   r   r   r   )r   r   r   r   r   rA   H  s    zDerSequenceTests.testInit1c             C   sž   t ƒ }|  | ¡ tdƒ¡ |  | ¡ ¡ | d¡ |  | ¡ tdƒ¡ |  | ¡ d¡ |  | d¡d¡ |  | ¡ ¡ |  | d¡¡ |  | ¡ tdƒ¡ d S )Nz0 r   z0 r%   F)	r
   r   r   r   ÚassertFalseÚhasOnlyIntsÚappendÚhasIntsÚ
assertTrue)r   r   r   r   r   rC   L  s    
zDerSequenceTests.testEncode1c             C   s¢   t ƒ }| d¡ d|d< |  t|ƒd¡ |  |d d¡ |  |d d¡ |  | ¡ tdƒ¡ dg|d d …< |  t|ƒd¡ |  |d d¡ |  | ¡ tdƒ¡ d S )Nr   r%   rE   z0)r
   rW   r   Úlenr   r   )r   r   r   r   r   rD   [  s    
zDerSequenceTests.testEncode2c             C   s(   t ƒ }| d¡ |  | ¡ tdƒ¡ d S )Ni€  u   0Â€)r
   rW   r   r   r   )r   r   r   r   r   rF   j  s    
zDerSequenceTests.testEncode3c             C   sÄ   t ƒ }| dd ¡ |  | ¡ tdƒtdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ ¡ d S )Nr'   i   u   0Â‚u   Â‚         z              z	         )r
   rW   r   r   r   )r   r   r   r   r   rI   p  s
    
–zDerSequenceTests.testEncode4c             C   s2   t ƒ }|d7 }|tdƒ7 }|  | ¡ tdƒ¡ d S )Nr%   z0 z00 )r
   r   r   r   )r   r   r   r   r   ÚtestEncode5‰  s    zDerSequenceTests.testEncode5c             C   s*  t ƒ }| d¡ | d¡ |  | ¡ tdƒ¡ |  | ¡ ¡ |  | d¡¡ t ƒ }| d¡ | d¡ |  | ¡ tdƒ¡ |  | ¡ d¡ |  | d¡d¡ |  | ¡ ¡ |  | d¡¡ | d¡ d	d
g|dd …< |  t	|ƒd¡ |  |dd … d	d
g¡ |  |dd… d	g¡ |  | ¡ tdƒ¡ d S )Ni€  éÿ   u   0Â€ Ã¿Fr'   éþÿÿÿu	   0Ã¾r%   é	   é   r   rE   z0		)
r
   rW   r   r   r   rY   rV   rX   rU   rZ   )r   r   r   r   r   ÚtestEncode6  s(    




zDerSequenceTests.testEncode6c             C   sD   t ƒ }| d¡ | tdƒ¡ |  | ¡ tdƒ¡ |  | ¡ ¡ d S )Ni€  z0u   0	Â€0)r
   rW   r   r   r   rU   rV   )r   r   r   r   r   ÚtestEncode7¨  s
    
zDerSequenceTests.testEncode7c             C   sF   t ƒ }| d¡ | t dgƒ¡ |  | ¡ tdƒ¡ |  | ¡ ¡ d S )Ni€  r*   u   0	Â€0)r
   rW   r   r   r   rU   rV   )r   r   r   r   r   ÚtestEncode8°  s
    
zDerSequenceTests.testEncode8c             C   s„   t ƒ }| tdƒ¡ |  t|ƒd¡ | tdƒ¡ |  t|ƒd¡ |  |d d¡ | tdƒ¡ |  t|ƒd¡ |  |d d¡ d S )Nz0 r   z0 r%   )r
   r.   r   r   rZ   )r   r   r   r   r   rK   º  s    zDerSequenceTests.testDecode1c             C   s8   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ d S )Nz0r%   r   rB   )r
   r.   r   r   rZ   )r   r   r   r   r   rL   È  s    zDerSequenceTests.testDecode2c             C   sÔ   t ƒ }| tdƒtdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ tdƒ ¡ |  t|ƒd¡ |  |d dd ¡ d S )	Nu   0Â‚u   Â‚         z              z	         r%   r   r'   i   )r
   r.   r   r   rZ   )r   r   r   r   r   ÚtestDecode4Ï  s    –zDerSequenceTests.testDecode4c             C   sH   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ |  |d d¡ d S )Nu   0Â€ Ã¿r'   r   i€  r%   r\   )r
   r.   r   r   rZ   )r   r   r   r   r   rO   é  s
    zDerSequenceTests.testDecode6c             C   s`   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ |  |d tdƒ¡ |  |d tdƒ¡ d S )	Nu   0
Â€$Â¶c r   r   i€  r%   u   $Â¶cr'   z )r
   r.   r   r   rZ   )r   r   r   r   r   rP   ñ  s    zDerSequenceTests.testDecode7c             C   s   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d tdƒ¡ |  |d tdƒ¡ |  | ¡ d¡ |  | d¡d¡ |  | ¡ ¡ |  | d¡¡ d S )Nu	   0$Â¶c r'   r   u   $Â¶cr%   z F)r
   r.   r   r   rZ   rX   rU   rV   )r   r   r   r   r   ÚtestDecode8ú  s    zDerSequenceTests.testDecode8c             C   s    t ƒ }|  || tdƒ¡¡ d S )Nu	   0$Â¶c )r
   r   r.   r   )r   r   r   r   r   ÚtestDecode9  s    zDerSequenceTests.testDecode9c             C   sF   t ƒ }|  t|jtdƒ¡ |  t|jtdƒ¡ |  t|jtdƒ¡ d S )NÚ r5   r!   )r
   r   r   r.   r   )r   r   r   r   r   rS     s    zDerSequenceTests.testErrDecode1c             C   s   t ƒ }|  t|jtdƒ¡ d S )Nz0  )r
   r   r   r.   r   )r   r   r   r   r   ÚtestErrDecode2  s    zDerSequenceTests.testErrDecode2c             C   sF   t ƒ }|  t|jtdƒ¡ |  t|jtdƒ¡ |  t|jtdƒ¡ d S )Nz0 u   0Âu   0Â)r
   r   r   r.   r   )r   r   r   r   r   ÚtestErrDecode3  s    zDerSequenceTests.testErrDecode3c             C   sb   t dddgƒ ¡ }t ƒ j|dd t ƒ j|dd | jtt ƒ j|dd | jtt ƒ j|dd d S )Nr%   r'   r   )Znr_elements)r'   r   )r   r*   )r
   r   r.   r   r   )r   Zder_binr   r   r   Útest_expected_nr_elements"  s
    z*DerSequenceTests.test_expected_nr_elementsc             C   sv   t dddgƒ ¡ }t ddt ddgƒgƒ ¡ }t ƒ j|dd t ƒ j|dd t ƒ j|dd | jtt ƒ j|dd d S )Nr%   r'   r   r   T)Zonly_ints_expectedF)r
   r   r.   r   r   )r   Zder_bin1Zder_bin2r   r   r   Útest_expected_only_integers*  s    z,DerSequenceTests.test_expected_only_integersN)r=   r>   r?   rA   rC   rD   rF   rI   r[   r`   ra   rb   rK   rL   rc   rO   rP   rd   re   rS   rg   rh   ri   rj   r   r   r   r   rT   F  s*   
		rT   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚDerOctetStringTestsc             C   s$   t tdƒƒ}|  | ¡ tdƒ¡ d S )Nõ   Ã¿u   Ã¿)r	   r   r   r   )r   r   r   r   r   rA   7  s    zDerOctetStringTests.testInit1c             C   s<   t ƒ }|  | ¡ tdƒ¡ tdƒ|_|  | ¡ tdƒ¡ d S )Nz zz)r	   r   r   r   r   )r   r   r   r   r   rC   ;  s    
zDerOctetStringTests.testEncode1c             C   sJ   t ƒ }| tdƒ¡ |  |jtdƒ¡ | tdƒ¡ |  |jtdƒ¡ d S )Nz rf   zz)r	   r.   r   r   r   )r   r   r   r   r   rK   E  s
    zDerOctetStringTests.testDecode1c             C   s    t ƒ }|  || tdƒ¡¡ d S )Nz )r	   r   r.   r   )r   r   r   r   r   rL   N  s    zDerOctetStringTests.testDecode2c             C   s   t ƒ }|  t|jtdƒ¡ d S )Nu   Ã¿)r	   r   r   r.   r   )r   r   r   r   r   rS   S  s    z"DerOctetStringTests.testErrDecode1N)r=   r>   r?   rA   rC   rK   rL   rS   r   r   r   r   rk   5  s
   
	rk   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚDerNullTestsc             C   s   t ƒ }|  | ¡ tdƒ¡ d S )Nz )r   r   r   r   )r   r   r   r   r   rC   Z  s    zDerNullTests.testEncode1c             C   s    t ƒ }|  || tdƒ¡¡ d S )Nz )r   r   r.   r   )r   r   r   r   r   rK   `  s    zDerNullTests.testDecode1N)r=   r>   r?   rC   rK   r   r   r   r   rm   X  s   rm   c               @   sD   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S )ÚDerObjectIdTestsc             C   s   t dƒ}|  | ¡ d¡ d S )Nz1.1s   ))r   r   r   )r   r   r   r   r   rA   g  s    zDerObjectIdTests.testInit1c             C   sP   t dƒ}|  | ¡ d¡ t ƒ }d|_|  | ¡ d¡ t dƒ}|  | ¡ d¡ d S )Nz1.2.840.113549.1.1.1s   	*†H†÷z
2.999.1234s   ˆ7‰R)r   r   r   rJ   )r   r   r   r   r   rC   k  s    zDerObjectIdTests.testEncode1c             C   s0   t dƒ}|  t|j¡ t dƒ}|  t|j¡ d S )Nz3.4z1.40)r   r   r   r   )r   r   r   r   r   rD   v  s    zDerObjectIdTests.testEncode2c             C   s"   t ƒ }| d¡ |  |jd¡ d S )Ns   	*†H†÷z1.2.840.113549.1.1.1)r   r.   r   rJ   )r   r   r   r   r   rK     s    
zDerObjectIdTests.testDecode1c             C   s   t ƒ }|  || d¡¡ d S )Ns   	*†H†÷)r   r   r.   )r   r   r   r   r   rL   …  s    zDerObjectIdTests.testDecode2c             C   s"   t ƒ }| d¡ |  |jd¡ d S )Ns   	*†H†÷ z1.2.840.113549.1.0.1)r   r.   r   rJ   )r   r   r   r   r   rM   ‹  s    
zDerObjectIdTests.testDecode3c             C   s"   t ƒ }| d¡ |  |jd¡ d S )Ns   ˆ7‰Rz
2.999.1234)r   r.   r   rJ   )r   r   r   r   r   rc     s    
zDerObjectIdTests.testDecode4N)
r=   r>   r?   rA   rC   rD   rK   rL   rM   rc   r   r   r   r   rn   e  s   	rn   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚDerBitStringTestsc             C   s$   t tdƒƒ}|  | ¡ tdƒ¡ d S )Nrl   u    Ã¿)r   r   r   r   )r   r   r   r   r   rA   ˜  s    zDerBitStringTests.testInit1c             C   s$   t tdƒƒ}|  | ¡ tdƒ¡ d S )Nr%   z )r   r   r   r   r   )r   r   r   r   r   Ú	testInit2œ  s    zDerBitStringTests.testInit2c             C   sb   t ƒ }|  | ¡ tdƒ¡ t tdƒƒ}|  | ¡ tdƒ¡ t ƒ }tdƒ|_|  | ¡ tdƒ¡ d S )Nz zz )r   r   r   r   rJ   )r   r   r   r   r   rC      s    
zDerBitStringTests.testEncode1c             C   sJ   t ƒ }| tdƒ¡ |  |jtdƒ¡ | tdƒ¡ |  |jtdƒ¡ d S )Nz rf   z z)r   r.   r   r   rJ   )r   r   r   r   r   rK   ®  s
    zDerBitStringTests.testDecode1c             C   s    t ƒ }|  || tdƒ¡¡ d S )Nz )r   r   r.   r   )r   r   r   r   r   rL   ·  s    zDerBitStringTests.testDecode2N)r=   r>   r?   rA   rp   rC   rK   rL   r   r   r   r   ro   –  s
   	ro   c               @   s\   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S )ÚDerSetOfTestsc             C   s,   t tdƒtdƒgƒ}|  | ¡ tdƒ¡ d S )Nr%   r'   z1)r   r   r   r   r   )r   r   r   r   r   rA   ¿  s    zDerSetOfTests.testInit1c             C   sP   t ƒ }|  | ¡ tdƒ¡ | d¡ |  | ¡ tdƒ¡ |  | ¡ tdƒ¡ d S )Nz1 r   z1 )r   r   r   r   Úadd)r   r   r   r   r   rC   Ã  s
    
zDerSetOfTests.testEncode1c             C   sR   t ƒ }| d¡ | d¡ |  | ¡ tdƒ¡ t ddgƒ}|  | ¡ tdƒ¡ d S )Ni€  r\   u   1 Ã¿Â€)r   rr   r   r   r   )r   r   r   r   r   rD   Í  s    

zDerSetOfTests.testEncode2c             C   s(   t ƒ }| d¡ |  t|jtdƒ¡ d S )Ni€  z   )r   rr   r   r   r   )r   r   r   r   r   rF   ×  s    
zDerSetOfTests.testEncode3c             C   s:   t ƒ }| tdƒ¡ | tdƒ¡ |  | ¡ tdƒ¡ d S )Nz zz1 )r   rr   r   r   r   )r   r   r   r   r   rI   Ý  s    zDerSetOfTests.testEncode4c             C   sX   t ƒ }| tdƒ¡ |  t|ƒd¡ | tdƒ¡ |  t|ƒd¡ |  t|ƒdg¡ d S )Nz1 r   z1 r%   )r   r.   r   r   rZ   Úlist)r   r   r   r   r   rK   æ  s    zDerSetOfTests.testDecode1c             C   sL   t ƒ }| tdƒ¡ |  t|ƒd¡ t|ƒ}|  d|k¡ |  d|k¡ d S )Nu   1Â€ Ã¿r'   i€  r\   )r   r.   r   r   rZ   rs   rY   )r   r   Úlr   r   r   rL   ð  s    zDerSetOfTests.testDecode2c             C   s   t ƒ }|  t|jtdƒ¡ d S )Nu   0
Â€$Â¶c )r   r   r   r.   r   )r   r   r   r   r   rM   ù  s    
zDerSetOfTests.testDecode3c             C   s    t ƒ }|  || tdƒ¡¡ d S )Nu   1Â€ Ã¿)r   r   r.   r   )r   r   r   r   r   rc      s    zDerSetOfTests.testDecode4c             C   s   t ƒ }|  t|jtdƒ¡ d S )Nu   1Â€ Ã¿Âª)r   r   r   r.   r   )r   r   r   r   r   rS     s    
zDerSetOfTests.testErrDecode1N)r=   r>   r?   rA   rC   rD   rF   rI   rK   rL   rM   rc   rS   r   r   r   r   rq   ½  s   

	
	rq   c               @   s\   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S )ÚDerBooleanTestsc             C   s   t dƒ}|  | ¡ d¡ d S )NFs    )r   r   r   )r   r   r   r   r   rC     s    zDerBooleanTests.testEncode1c             C   s   t dƒ}|  | ¡ d¡ d S )NTs   ÿ)r   r   r   )r   r   r   r   r   rD     s    zDerBooleanTests.testEncode2c             C   s    t ddd}|  | ¡ d¡ d S )NFé   )r&   s   ’ )r   r   r   )r   r   r   r   r   rF     s    zDerBooleanTests.testEncode3c             C   s    t ddd}|  | ¡ d¡ d S )NFr*   )r+   s   ¥ )r   r   r   )r   r   r   r   r   rI     s    zDerBooleanTests.testEncode4c             C   s"   t ƒ }| d¡ |  |jd¡ d S )Ns    F)r   r.   r   rJ   )r   r   r   r   r   rK   "  s    
zDerBooleanTests.testDecode1c             C   s"   t ƒ }| d¡ |  |jd¡ d S )Ns   ÿT)r   r.   r   rJ   )r   r   r   r   r   rL   '  s    
zDerBooleanTests.testDecode2c             C   s&   t dd}| d¡ |  |jd¡ d S )Nrv   )r&   s   ’ F)r   r.   r   rJ   )r   r   r   r   r   rM   ,  s    

zDerBooleanTests.testDecode3c             C   s&   t dd}| d¡ |  |jd¡ d S )Nr*   )r+   s   ¥ F)r   r.   r   rJ   )r   r   r   r   r   rc   1  s    

zDerBooleanTests.testDecode4c             C   s   t ƒ }|  t|jd¡ d S )Ns    )r   r   r   r.   )r   r   r   r   r   ÚtestErrorDecode16  s    z DerBooleanTests.testErrorDecode1c             C   s   t ƒ }|  t|jd¡ d S )Ns    ÿ)r   r   r   r.   )r   r   r   r   r   ÚtestErrorDecode2;  s    z DerBooleanTests.testErrorDecode2N)r=   r>   r?   rC   rD   rF   rI   rK   rL   rM   rc   rw   rx   r   r   r   r   ru     s   ru   c             C   s€   ddl m} g }||tƒ7 }||tƒ7 }||tƒ7 }||tƒ7 }||tƒ7 }||tƒ7 }||tƒ7 }||t	ƒ7 }||t
ƒ7 }|S )Nr   )Úlist_test_cases)ZCryptodome.SelfTest.st_commonry   r   r@   rT   rk   rm   rn   ro   rq   ru   )Úconfigry   Z	listTestsr   r   r   Ú	get_testsA  s    r{   Ú__main__c               C   s   t  tƒ ¡S )N)ÚunittestZ	TestSuiter{   r   r   r   r   Ú<lambda>P  ó    r~   Úsuite)ZdefaultTest)Ú__doc__r}   ZCryptodome.Util.py3compatZCryptodome.Util.asn1r   r   r   r   r   r   r	   r
   r   ZTestCaser   r@   rT   rk   rm   rn   ro   rq   ru   r{   r=   r€   Úmainr   r   r   r   Ú<module>"   s$   ,x # p#1'R2
