U
    ÈZj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 Crypto.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/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/Crypto/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úú ÚEzEé   zEúT)Úconstructedú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   Ú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   Ú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   Âžppllr&   r   r   r   r   ÚtestObjEncode4R   s    

zDerObjectTests.testObjEncode4c                 C   s.   t ddd�}tdƒ|_|  | ¡ tdƒ¡ d S )Nr(   é   ©ÚexplicitÚxxllõ	   Â¥xxllr&   r   r   r   r   ÚtestObjEncode5\   s    
zDerObjectTests.testObjEncode5c                 C   s:   t dƒ}| tdƒ¡ |  |jtdƒ¡ |  |jd¡ d S )Nr+   úú©r   Údecoder   r   r   Ú
_tag_octetr   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%   r6   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   r7   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*   r4   u   Â� ú Tu   Â¯ )r   r   r   r7   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   ÚtestObjDecode5†   s    zDerObjectTests.testObjDecode5c                 C   s8   t ƒ }| tdƒ¡ |  |jd¡ |  |jtdƒ¡ d S )Nu   eÂˆée   õ   Âˆ)r   r7   r   r   r8   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/   r2   r1   r   u	   Â xxll)r   r7   r   r   Z_inner_tag_octetr   r   r   r   r   ÚtestObjDecode7’   s    zDerObjectTests.testObjDecode7c                 C   s"   t dƒ}|  || tdƒ¡¡ d S )Nr+   r4   )r   r   r7   r   r   r   r   r   ÚtestObjDecode8Ÿ   s    zDerObjectTests.testObjDecode8N)Ú__name__Ú
__module__Ú__qualname__r   r!   r#   r'   r-   r3   r9   r;   r=   r@   rA   rD   rE   rF   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)   ú©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   ú r)   rK   é   úrL   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    Â€é€  õ   Â€r+   é   õ   Â‚         ú              ú	         rL   r   r   r   r   ÚtestEncode2¶   sX    
ÿþýüûúùø	÷
öõôóòñðïîÿzDerIntegerTests.testEncode2c                 C   sX   t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ d S )Néÿÿÿÿõ   Ã¿i€ÿÿÿu   Â€i¿¨þÿu   Ã¾Â¨Â¿rL   r   r   r   r   ÚtestEncode3Õ   s    zDerIntegerTests.testEncode3c                 C   s$   t ddd�}|  | ¡ tdƒ¡ d S )Né4   r"   r/   õ   Â£4rL   ©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 )NrN   r   rK   r)   rP   rO   ©r   r7   r   r   Úvaluer   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 )NrS   rR   rU   rV   rW   r+   rT   ra   r   r   r   r   ÚtestDecode2õ   sV    ÿþýüûúùø	÷
öõôóòñðïîÿzDerIntegerTests.testDecode2c                 C   sB   t ƒ }| tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ d S )NrZ   rY   u   Â€ i €ÿÿra   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   Ã¿Ã¿rY   r   r   ra   r   r   r   r   ÚtestDecode5  s    zDerIntegerTests.testDecode5c                 C   s*   t dd�}| tdƒ¡ |  |jd¡ d S )Nr"   r/   r]   r\   ra   r^   r   r   r   ÚtestDecode6)  s    
zDerIntegerTests.testDecode6c                 C   s    t ƒ }|  || tdƒ¡¡ d S )NrP   )r   r   r7   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   r7   r   r   r^   r   r   r   ÚtestStrict16  s
    

zDerIntegerTests.testStrict1c                 C   s   t ƒ }|  t|jtdƒ¡ d S )Nu   Â�)r   r   r   r7   r   r   r   r   r   ÚtestErrDecode1@  s    zDerIntegerTests.testErrDecode1N)rG   rH   rI   rM   rQ   rX   r[   r`   rc   rd   re   rf   rg   rh   rj   rk   r   r   r   r   rJ   ¤   s   

rJ   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+   r   z
00 )r
   r   r   r   r   r   r   r   r   rM   H  s    zDerSequenceTests.testInit1c                 C   sž   t ƒ }|  | ¡ tdƒ¡ |  | ¡ ¡ | d¡ |  | ¡ tdƒ¡ |  | ¡ d¡ |  | d¡d¡ |  | ¡ ¡ |  | d¡¡ |  | ¡ tdƒ¡ d S )Nr   r   ú0 r)   F)	r
   r   r   r   ÚassertFalseÚhasOnlyIntsÚappendÚhasIntsÚ
assertTruer   r   r   r   rQ   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)   rY   z0)r
   rp   r   Úlenr   r   r   r   r   r   rX   [  s    
zDerSequenceTests.testEncode2c                 C   s(   t ƒ }| d¡ |  | ¡ tdƒ¡ d S )NrR   u   0Â€©r
   rp   r   r   r   r   r   r   r   r[   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+   rT   õ   0Â‚rU   rV   rW   rt   r   r   r   r   r`   p  sR    ÿþýüûúùø	÷
öõôóòñðïîízDerSequenceTests.testEncode4c                 C   s2   t ƒ }|d7 }|tdƒ7 }|  | ¡ tdƒ¡ d S )Nr)   r   z00 )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 )NrR   éÿ   õ   0Â€ Ã¿Fr+   éþÿÿÿu	   0Ã¾r)   é	   é   r"   rY   z0		)
r
   rp   r   r   r   rr   ro   rq   rn   rs   r   r   r   r   ÚtestEncode6�  s(    




zDerSequenceTests.testEncode6c                 C   sD   t ƒ }| d¡ | tdƒ¡ |  | ¡ tdƒ¡ |  | ¡ ¡ d S )NrR   z0õ   0	Â€0)r
   rp   r   r   r   rn   ro   r   r   r   r   ÚtestEncode7¨  s
    
zDerSequenceTests.testEncode7c                 C   sF   t ƒ }| d¡ | t dgƒ¡ |  | ¡ tdƒ¡ |  | ¡ ¡ d S )NrR   r.   r}   )r
   rp   r   r   r   rn   ro   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 )Nr   r   rm   r)   ©r
   r7   r   r   rs   r   r   r   r   rc   º  s    zDerSequenceTests.testDecode1c                 C   s8   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ d S )Nz0r)   r   rO   r€   r   r   r   r   rd   È  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 )	Nru   rU   rV   rW   r)   r   r+   rT   r€   r   r   r   r   ÚtestDecode4Ï  sT    
ÿþýüûúùø	÷
öõôóòñðïîízDerSequenceTests.testDecode4c                 C   sH   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ |  |d d¡ d S )Nrx   r+   r   rR   r)   rw   r€   r   r   r   r   rg   é  s
    zDerSequenceTests.testDecode6c                 C   s`   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ |  |d tdƒ¡ |  |d tdƒ¡ d S )	Nõ   0
Â€$Â¶c r"   r   rR   r)   õ   $Â¶cr+   ú r€   r   r   r   r   rh   ñ  s    zDerSequenceTests.testDecode7c                 C   s�   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d tdƒ¡ |  |d tdƒ¡ |  | ¡ d¡ |  | d¡d¡ |  | ¡ ¡ |  | d¡¡ d S )Nõ	   0$Â¶c r+   r   rƒ   r)   r„   F)r
   r7   r   r   rs   rq   rn   ro   r   r   r   r   ÚtestDecode8ú  s    zDerSequenceTests.testDecode8c                 C   s    t ƒ }|  || tdƒ¡¡ d S )Nr…   )r
   r   r7   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Ú r?   r$   ©r
   r   r   r7   r   r   r   r   r   rk     s    zDerSequenceTests.testErrDecode1c                 C   s   t ƒ }|  t|jtdƒ¡ d S )Nz0  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   Ú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   r7   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_expectedFrŒ   )r   Zder_bin1Zder_bin2r   r   r   Útest_expected_only_integers*  s    z,DerSequenceTests.test_expected_only_integersN)rG   rH   rI   rM   rQ   rX   r[   r`   rv   r|   r~   r   rc   rd   r�   rg   rh   r†   r‡   rk   rŠ   r‹   r�   rŽ   r   r   r   r   rl   F  s*   
		rl   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   rM   7  s    zDerOctetStringTests.testInit1c                 C   s<   t ƒ }|  | ¡ tdƒ¡ tdƒ|_|  | ¡ tdƒ¡ d S )Nú r5   ú)r	   r   r   r   r   r   r   r   r   rQ   ;  s    
zDerOctetStringTests.testEncode1c                 C   sJ   t ƒ }| tdƒ¡ |  |jtdƒ¡ | tdƒ¡ |  |jtdƒ¡ d S )Nr‘   rˆ   r’   r5   )r	   r7   r   r   r   r   r   r   r   rc   E  s
    zDerOctetStringTests.testDecode1c                 C   s    t ƒ }|  || tdƒ¡¡ d S )Nr‘   )r	   r   r7   r   r   r   r   r   rd   N  s    zDerOctetStringTests.testDecode2c                 C   s   t ƒ }|  t|jtdƒ¡ d S )Nu   Ã¿)r	   r   r   r7   r   r   r   r   r   rk   S  s    z"DerOctetStringTests.testErrDecode1N)rG   rH   rI   rM   rQ   rc   rd   rk   r   r   r   r   r�   5  s
   
	r�   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   rQ   Z  s    zDerNullTests.testEncode1c                 C   s    t ƒ }|  || tdƒ¡¡ d S r”   )r   r   r7   r   r   r   r   r   rc   `  s    zDerNullTests.testDecode1N)rG   rH   rI   rQ   rc   r   r   r   r   r“   X  s   r“   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   rM   g  s    zDerObjectIdTests.testInit1c                 C   sP   t dƒ}|  | ¡ d¡ t ƒ }d|_|  | ¡ d¡ t dƒ}|  | ¡ d¡ d S )Nú1.2.840.113549.1.1.1ó   	*†H†÷ú
2.999.1234ó   ˆ7‰R)r   r   r   rb   r   r   r   r   rQ   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   rX   v  s    zDerObjectIdTests.testEncode2c                 C   s"   t ƒ }| d¡ |  |jd¡ d S )Nr—   r–   ©r   r7   r   rb   r   r   r   r   rc     s    
zDerObjectIdTests.testDecode1c                 C   s   t ƒ }|  || d¡¡ d S )Nr—   )r   r   r7   r   r   r   r   rd   …  s    ÿzDerObjectIdTests.testDecode2c                 C   s"   t ƒ }| d¡ |  |jd¡ d S )Ns   	*†H†÷ z1.2.840.113549.1.0.1rš   r   r   r   r   re   ‹  s    
zDerObjectIdTests.testDecode3c                 C   s"   t ƒ }| d¡ |  |jd¡ d S )Nr™   r˜   rš   r   r   r   r   r�   �  s    
zDerObjectIdTests.testDecode4N)
rG   rH   rI   rM   rQ   rX   rc   rd   re   r�   r   r   r   r   r•   e  s   	r•   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 )Nr�   u    Ã¿)r   r   r   r   r   r   r   r   rM   ˜  s    zDerBitStringTests.testInit1c                 C   s$   t tdƒƒ}|  | ¡ tdƒ¡ d S )Nr)   z )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 r5   ú )r   r   r   r   rb   r   r   r   r   rQ      s    
zDerBitStringTests.testEncode1c                 C   sJ   t ƒ }| tdƒ¡ |  |jtdƒ¡ | tdƒ¡ |  |jtdƒ¡ d S )Nú rˆ   r�   r5   )r   r7   r   r   rb   r   r   r   r   rc   ®  s
    zDerBitStringTests.testDecode1c                 C   s    t ƒ }|  || tdƒ¡¡ d S )Nrž   )r   r   r7   r   r   r   r   r   rd   ·  s    zDerBitStringTests.testDecode2N)rG   rH   rI   rM   rœ   rQ   rc   rd   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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   rM   ¿  s    zDerSetOfTests.testInit1c                 C   sP   t ƒ }|  | ¡ tdƒ¡ | d¡ |  | ¡ tdƒ¡ |  | ¡ tdƒ¡ d S )Nú1 r   ú1 )r   r   r   r   Úaddr   r   r   r   rQ   Ã  s
    
zDerSetOfTests.testEncode1c                 C   sR   t ƒ }| d¡ | d¡ |  | ¡ tdƒ¡ t ddgƒ}|  | ¡ tdƒ¡ d S )NrR   rw   u   1 Ã¿Â€)r   r¢   r   r   r   r   r   r   r   rX   Í  s    

zDerSetOfTests.testEncode2c                 C   s(   t ƒ }| d¡ |  t|jtdƒ¡ d S )NrR   z   )r   r¢   r   r   r   r   r   r   r   r[   ×  s    
zDerSetOfTests.testEncode3c                 C   s:   t ƒ }| tdƒ¡ | tdƒ¡ |  | ¡ tdƒ¡ d S )Nz zz1 )r   r¢   r   r   r   r   r   r   r   r`   Ý  s    zDerSetOfTests.testEncode4c                 C   sX   t ƒ }| tdƒ¡ |  t|ƒd¡ | tdƒ¡ |  t|ƒd¡ |  t|ƒdg¡ d S )Nr    r   r¡   r)   )r   r7   r   r   rs   Úlistr   r   r   r   rc   æ  s    zDerSetOfTests.testDecode1c                 C   sL   t ƒ }| tdƒ¡ |  t|ƒd¡ t|ƒ}|  d|k¡ |  d|k¡ d S )Nõ   1Â€ Ã¿r+   rR   rw   )r   r7   r   r   rs   r£   rr   )r   r    Úlr   r   r   rd   ð  s    zDerSetOfTests.testDecode2c                 C   s   t ƒ }|  t|jtdƒ¡ d S )Nr‚   ©r   r   r   r7   r   r   r   r   r   re   ù  s    
ÿzDerSetOfTests.testDecode3c                 C   s    t ƒ }|  || tdƒ¡¡ d S )Nr¤   )r   r   r7   r   r   r   r   r   r�      s    ÿzDerSetOfTests.testDecode4c                 C   s   t ƒ }|  t|jtdƒ¡ d S )Nu   1Â€ Ã¿Âªr¦   r   r   r   r   rk     s    
ÿzDerSetOfTests.testErrDecode1N)rG   rH   rI   rM   rQ   rX   r[   r`   rc   rd   re   r�   rk   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S )ÚDerBooleanTestsc                 C   s   t dƒ}|  | ¡ d¡ d S )NFó    ©r   r   r   r   r   r   r   rQ     s    zDerBooleanTests.testEncode1c                 C   s   t dƒ}|  | ¡ d¡ d S )NTó   ÿr©   r   r   r   r   rX     s    zDerBooleanTests.testEncode2c                 C   s    t ddd�}|  | ¡ d¡ d S )NFé   ©r*   ó   ’ r©   r   r   r   r   r[     s    zDerBooleanTests.testEncode3c                 C   s    t ddd�}|  | ¡ d¡ d S )NFr.   r/   ó   ¥ r©   r   r   r   r   r`     s    zDerBooleanTests.testEncode4c                 C   s"   t ƒ }| d¡ |  |jd¡ d S )Nr¨   F©r   r7   r   rb   r   r   r   r   rc   "  s    
zDerBooleanTests.testDecode1c                 C   s"   t ƒ }| d¡ |  |jd¡ d S )Nrª   Tr¯   r   r   r   r   rd   '  s    
zDerBooleanTests.testDecode2c                 C   s&   t dd�}| d¡ |  |jd¡ d S )Nr«   r¬   r­   Fr¯   r   r   r   r   re   ,  s    

zDerBooleanTests.testDecode3c                 C   s&   t dd�}| d¡ |  |jd¡ d S )Nr.   r/   r®   Fr¯   r   r   r   r   r�   1  s    

zDerBooleanTests.testDecode4c                 C   s   t ƒ }|  t|jd¡ d S )Ns    ©r   r   r   r7   r   r   r   r   ÚtestErrorDecode16  s    z DerBooleanTests.testErrorDecode1c                 C   s   t ƒ }|  t|jd¡ d S )Ns    ÿr°   r   r   r   r   ÚtestErrorDecode2;  s    z DerBooleanTests.testErrorDecode2N)rG   rH   rI   rQ   rX   r[   r`   rc   rd   re   r�   r±   r²   r   r   r   r   r§     s   r§   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Crypto.SelfTest.st_commonr³   r   rJ   rl   r�   r“   r•   r›   rŸ   r§   )Úconfigr³   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Crypto.Util.py3compatZCrypto.Util.asn1r   r   r   r   r   r   r	   r
   r   ZTestCaser   rJ   rl   r�   r“   r•   r›   rŸ   r§   rµ   rG   rº   Úmainr   r   r   r   Ú<module>"   s$   ,x # p#1'R2
