o
    Þý°j,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 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   ú•/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/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úú Ú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   Ú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%   r7   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   r8   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*   r5   u   Â� ú Tu   Â¯ )r   r   r   r8   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   r8   r   r   r9   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/   r0   r3   r2   r   u	   Â xxll)r   r8   r   r   Ú_inner_tag_octetr   r   r   r   r   ÚtestObjDecode7’   s   zDerObjectTests.testObjDecode7c                 C   s"   t dƒ}|  || tdƒ¡¡ d S )Nr,   r5   )r   r   r8   r   r   r   r   r   ÚtestObjDecode8Ÿ   s   zDerObjectTests.testObjDecode8N)Ú__name__Ú
__module__Ú__qualname__r   r!   r#   r'   r.   r4   r:   r<   r>   rA   rB   rE   rG   rH   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   óX   t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ t dƒ}|  | ¡ tdƒ¡ d S )Nr   ú r)   rM   é   úrN   r   r   r   r   ÚtestEncode1ª   ó   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,   é   õ   Â‚         ú              ú	         rN   r   r   r   r   ÚtestEncode2¶   sX   
ÿþýüûúùø	÷
öõôóòñðïîÿzDerIntegerTests.testEncode2c                 C   rP   )Néÿÿÿÿõ   Ã¿i€ÿÿÿu   Â€i¿¨þÿu   Ã¾Â¨Â¿rN   r   r   r   r   ÚtestEncode3Õ   rU   zDerIntegerTests.testEncode3c                 C   s$   t ddd�}|  | ¡ tdƒ¡ d S )Né4   r"   r0   õ   Â£4rN   ©r   Únumberr   r   r   ÚtestEncode4á   s   zDerIntegerTests.testEncode4c                 C   ó^   t ƒ }| tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ d S )NrQ   r   rM   r)   rS   rR   ©r   r8   r   r   Úvaluer   r   r   r   ÚtestDecode1è   ó   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 )NrW   rV   rY   rZ   r[   r,   rX   rf   r   r   r   r   ÚtestDecode2õ   sV   ÿþýüûúùø	÷
öõôóòñðïîÿzDerIntegerTests.testDecode2c                 C   sB   t ƒ }| tdƒ¡ |  |jd¡ | tdƒ¡ |  |jd¡ d S )Nr^   r]   u   Â€ i €ÿÿrf   r   r   r   r   ÚtestDecode3  s
   zDerIntegerTests.testDecode3c                 C   re   )Nz r)   u   Ã¿Ã¿r]   r   r   rf   r   r   r   r   ÚtestDecode5  ri   zDerIntegerTests.testDecode5c                 C   s*   t dd�}| tdƒ¡ |  |jd¡ d S )Nr"   r0   ra   r`   rf   rb   r   r   r   ÚtestDecode6)  s   
zDerIntegerTests.testDecode6c                 C   ó    t ƒ }|  || tdƒ¡¡ d S )NrS   )r   r   r8   r   r   r   r   r   ÚtestDecode7/  ó   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   r8   r   r   rb   r   r   r   ÚtestStrict16  s
   

zDerIntegerTests.testStrict1c                 C   ó   t ƒ }|  t|jtdƒ¡ d S )Nu   Â�)r   r   r   r8   r   r   r   r   r   ÚtestErrDecode1@  ó   zDerIntegerTests.testErrDecode1N)rI   rJ   rK   rO   rT   r\   r_   rd   rh   rj   rk   rl   rm   ro   rr   rt   r   r   r   r   rL   ¤   s    

rL   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   rO   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   rT   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)   r]   z0)r
   rz   r   Úlenr   r   r   r   r   r   r\   [  s   
zDerSequenceTests.testEncode2c                 C   s(   t ƒ }| d¡ |  | ¡ tdƒ¡ d S )NrV   u   0Â€©r
   rz   r   r   r   r   r   r   r   r_   j  ó   
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,   rX   õ   0Â‚rY   rZ   r[   r~   r   r   r   r   rd   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 )NrV   éÿ   õ   0Â€ Ã¿Fr,   éþÿÿÿu	   0Ã¾r)   é	   é   r"   r]   z0		)
r
   rz   r   r   r   r|   ry   r{   rx   r}   r   r   r   r   ÚtestEncode6�  s(   




zDerSequenceTests.testEncode6c                 C   sD   t ƒ }| d¡ | tdƒ¡ |  | ¡ tdƒ¡ |  | ¡ ¡ d S )NrV   z0õ   0	Â€0)r
   rz   r   r   r   rx   ry   r   r   r   r   ÚtestEncode7¨  s
   
zDerSequenceTests.testEncode7c                 C   sF   t ƒ }| d¡ | t dgƒ¡ |  | ¡ tdƒ¡ |  | ¡ ¡ d S )NrV   r/   rˆ   )r
   rz   r   r   r   rx   ry   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   rw   r)   ©r
   r8   r   r   r}   r   r   r   r   rh   º  s   zDerSequenceTests.testDecode1c                 C   s8   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ d S )Nz0r)   r   rR   r‹   r   r   r   r   rj   È  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 )	Nr€   rY   rZ   r[   r)   r   r,   rX   r‹   r   r   r   r   ÚtestDecode4Ï  sT   
ÿþýüûúùø	÷
öõôóòñðïîízDerSequenceTests.testDecode4c                 C   sH   t ƒ }| tdƒ¡ |  t|ƒd¡ |  |d d¡ |  |d d¡ d S )Nrƒ   r,   r   rV   r)   r‚   r‹   r   r   r   r   rm   é  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   rV   r)   õ   $Â¶cr,   ú r‹   r   r   r   r   ro   ñ  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
   r8   r   r   r}   r{   rx   ry   r   r   r   r   ÚtestDecode8ú  s   zDerSequenceTests.testDecode8c                 C   rn   )Nr�   )r
   r   r8   r   r   r   r   r   ÚtestDecode9  rp   zDerSequenceTests.testDecode9c                 C   óF   t ƒ }|  t|jtdƒ¡ |  t|jtdƒ¡ |  t|jtdƒ¡ d S )NÚ r@   r$   ©r
   r   r   r8   r   r   r   r   r   rt     s   zDerSequenceTests.testErrDecode1c                 C   rs   )Nz0  r•   r   r   r   r   ÚtestErrDecode2  s   zDerSequenceTests.testErrDecode2c                 C   r“   )Nz0 u   0Â�u   0Â�r•   r   r   r   r   ÚtestErrDecode3  s   zDerSequenceTests.testErrDecode3c                 C   s`   t g d¢ƒ ¡ }t ƒ j|dd� t ƒ j|dd� | jtt ƒ j|dd� | jtt ƒ j|dd� d S )N©r)   r,   r"   r"   )Únr_elements)r,   r"   r)   )r   r/   ©r
   r   r8   r   r   )r   Úder_binr   r   r   Útest_expected_nr_elements"  s
   z*DerSequenceTests.test_expected_nr_elementsc                 C   st   t g d¢ƒ ¡ }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"   r   T)Úonly_ints_expectedFrš   )r   Úder_bin1Úder_bin2r   r   r   Útest_expected_only_integers*  s   z,DerSequenceTests.test_expected_only_integersN)rI   rJ   rK   rO   rT   r\   r_   rd   r�   r‡   r‰   rŠ   rh   rj   rŒ   rm   ro   r‘   r’   rt   r–   r—   rœ   r    r   r   r   r   rv   F  s,    
		rv   c                   @   ó4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚDerOctetStringTestsc                 C   ó$   t tdƒƒ}|  | ¡ tdƒ¡ d S )Nõ   Ã¿u   Ã¿)r	   r   r   r   r   r   r   r   rO   7  ó   zDerOctetStringTests.testInit1c                 C   s<   t ƒ }|  | ¡ tdƒ¡ tdƒ|_|  | ¡ tdƒ¡ d S )Nú r6   ú)r	   r   r   r   r   r   r   r   r   rT   ;  s   
zDerOctetStringTests.testEncode1c                 C   óJ   t ƒ }| tdƒ¡ |  |jtdƒ¡ | tdƒ¡ |  |jtdƒ¡ d S )Nr¦   r”   r§   r6   )r	   r8   r   r   r   r   r   r   r   rh   E  ó
   zDerOctetStringTests.testDecode1c                 C   rn   )Nr¦   )r	   r   r8   r   r   r   r   r   rj   N  rp   zDerOctetStringTests.testDecode2c                 C   rs   )Nu   Ã¿)r	   r   r   r8   r   r   r   r   r   rt   S  ru   z"DerOctetStringTests.testErrDecode1N)rI   rJ   rK   rO   rT   rh   rj   rt   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   rT   Z  s   zDerNullTests.testEncode1c                 C   rn   r«   )r   r   r8   r   r   r   r   r   rh   `  rp   zDerNullTests.testDecode1N)rI   rJ   rK   rT   rh   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   ó   t dƒ}|  | ¡ d¡ d S )Nz1.1s   ))r   r   r   r   r   r   r   rO   g  ó   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   rg   r   r   r   r   rT   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\   v  s   zDerObjectIdTests.testEncode2c                 C   ó"   t ƒ }| d¡ |  |jd¡ d S )Nr°   r¯   ©r   r8   r   rg   r   r   r   r   rh     s   
zDerObjectIdTests.testDecode1c                 C   s   t ƒ }|  || d¡¡ d S )Nr°   )r   r   r8   r   r   r   r   rj   …  s   ÿzDerObjectIdTests.testDecode2c                 C   r³   )Ns   	*†H†÷ z1.2.840.113549.1.0.1r´   r   r   r   r   rk   ‹  ó   
zDerObjectIdTests.testDecode3c                 C   r³   )Nr²   r±   r´   r   r   r   r   rŒ   �  rµ   zDerObjectIdTests.testDecode4N)
rI   rJ   rK   rO   rT   r\   rh   rj   rk   rŒ   r   r   r   r   r¬   e  s    	r¬   c                   @   r¡   )ÚDerBitStringTestsc                 C   r£   )Nr¤   u    Ã¿)r   r   r   r   r   r   r   r   rO   ˜  r¥   zDerBitStringTests.testInit1c                 C   s$   t tdƒƒ}|  | ¡ tdƒ¡ d S )Nr)   z )r   r   r   r   r   r   r   r   r   Ú	testInit2œ  r¥   zDerBitStringTests.testInit2c                 C   sb   t ƒ }|  | ¡ tdƒ¡ t tdƒƒ}|  | ¡ tdƒ¡ t ƒ }tdƒ|_|  | ¡ tdƒ¡ d S )Nz r6   ú )r   r   r   r   rg   r   r   r   r   rT      s   
zDerBitStringTests.testEncode1c                 C   r¨   )Nú r”   r¸   r6   )r   r8   r   r   rg   r   r   r   r   rh   ®  r©   zDerBitStringTests.testDecode1c                 C   rn   )Nr¹   )r   r   r8   r   r   r   r   r   rj   ·  rp   zDerBitStringTests.testDecode2N)rI   rJ   rK   rO   r·   rT   rh   rj   r   r   r   r   r¶   –  s    	r¶   c                   @   ó\   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   rO   ¿  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   rT   Ã  s
   
zDerSetOfTests.testEncode1c                 C   sR   t ƒ }| d¡ | d¡ |  | ¡ tdƒ¡ t ddgƒ}|  | ¡ tdƒ¡ d S )NrV   r‚   u   1 Ã¿Â€)r   r¾   r   r   r   r   r   r   r   r\   Í  s   

zDerSetOfTests.testEncode2c                 C   s(   t ƒ }| d¡ |  t|jtdƒ¡ d S )NrV   z   )r   r¾   r   r   r   r   r   r   r   r_   ×  r   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   rd   Ý  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   r8   r   r   r}   Úlistr   r   r   r   rh   æ  s   zDerSetOfTests.testDecode1c                 C   sL   t ƒ }| tdƒ¡ |  t|ƒd¡ t|ƒ}|  d|v ¡ |  d|v ¡ d S )Nõ   1Â€ Ã¿r,   rV   r‚   )r   r8   r   r   r}   r¿   r|   )r   r    Úlr   r   r   rj   ð  s   zDerSetOfTests.testDecode2c                 C   rs   )Nr�   ©r   r   r   r8   r   r   r   r   r   rk   ù  s   
ÿzDerSetOfTests.testDecode3c                 C   rn   )NrÀ   )r   r   r8   r   r   r   r   r   rŒ      s   ÿzDerSetOfTests.testDecode4c                 C   rs   )Nu   1Â€ Ã¿ÂªrÂ   r   r   r   r   rt     s   
ÿzDerSetOfTests.testErrDecode1N)rI   rJ   rK   rO   rT   r\   r_   rd   rh   rj   rk   rŒ   rt   r   r   r   r   r»   ½  s    

	
	r»   c                   @   rº   )ÚDerBooleanTestsc                 C   r­   )NFó    ©r   r   r   r   r   r   r   rT     r®   zDerBooleanTests.testEncode1c                 C   r­   )NTó   ÿrÅ   r   r   r   r   r\     r®   zDerBooleanTests.testEncode2c                 C   ó    t ddd�}|  | ¡ d¡ d S )NFé   ©r*   ó   ’ rÅ   r   r   r   r   r_     ó   zDerBooleanTests.testEncode3c                 C   rÇ   )NFr/   r0   ó   ¥ rÅ   r   r   r   r   rd     rË   zDerBooleanTests.testEncode4c                 C   r³   )NrÄ   F©r   r8   r   rg   r   r   r   r   rh   "  rµ   zDerBooleanTests.testDecode1c                 C   r³   )NrÆ   TrÍ   r   r   r   r   rj   '  rµ   zDerBooleanTests.testDecode2c                 C   ó&   t dd�}| d¡ |  |jd¡ d S )NrÈ   rÉ   rÊ   FrÍ   r   r   r   r   rk   ,  ó   

zDerBooleanTests.testDecode3c                 C   rÎ   )Nr/   r0   rÌ   FrÍ   r   r   r   r   rŒ   1  rÏ   zDerBooleanTests.testDecode4c                 C   ó   t ƒ }|  t|jd¡ d S )Ns    ©r   r   r   r8   r   r   r   r   ÚtestErrorDecode16  ó   z DerBooleanTests.testErrorDecode1c                 C   rÐ   )Ns    ÿrÑ   r   r   r   r   ÚtestErrorDecode2;  rÓ   z DerBooleanTests.testErrorDecode2N)rI   rJ   rK   rT   r\   r_   rd   rh   rj   rk   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)ÚCryptodome.SelfTest.st_commonrÕ   r   rL   rv   r¢   rª   r¬   r¶   r»   rÃ   )ÚconfigrÕ   Ú	listTestsr   r   r   Ú	get_testsA  s   rÙ   Ú__main__c                   C   s   t  tƒ ¡S )N)ÚunittestÚ	TestSuiterÙ   r   r   r   r   Ú<lambda>P  s    rÝ   Úsuite)ÚdefaultTest)Ú__doc__rÛ   ÚCryptodome.Util.py3compatÚCryptodome.Util.asn1r   r   r   r   r   r   r	   r
   r   ÚTestCaser   rL   rv   r¢   rª   r¬   r¶   r»   rÃ   rÙ   rI   rÞ   Úmainr   r   r   r   Ú<module>   s(   !,x # p#1'R2þ