
    ¿ig,z                        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ej                  Z G d dej                  Z G d	 d
ej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zi fdZedk    rd Z ej        d           dS dS )z#Self-tests for Cryptodome.Util.asn1    N)*)		DerObjectDerSetOf
DerIntegerDerBitStringDerObjectIdDerNullDerOctetStringDerSequence
DerBooleanc                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )DerObjectTestsc                     |                      t          t          t          d                     |                      t          t          d           d S )Nu       )assertRaises
ValueErrorr   b)selfs    ^/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Util/test_asn1.pytestObjInit1zDerObjectTests.testObjInit1.   s>    *i:???*i66666    c                    t          t          d                    }|                     |                                t          d                     t          d          |_        |                     |                                t          d                     |                     |                                t          d                     t          d          }t          d          |_        |                     |                                t          d                     t          t          d          d	          }|                     |                                t          d
                     d S )N EzE   zET)constructed0 )r   r   assertEqualencodepayloadr   ders     r   testObjEncode1zDerObjectTests.testObjEncode16   s   &		""q}}555iiq'8'8999q'8'8999ooiiq'8'8999&		t444q}}55555r   c                     t          dt          d                    }|                     |                                t          d                     d S )N   zz)r   r   r    r!   r#   s     r   testObjEncode2zDerObjectTests.testObjEncode2G   sD    a
mm,,q);'<'<=====r   c                     t          t          d                    }t          d          dz  |_        |                     |                                t          d                     d S )Nr   0   u   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000r   r   r"   r    r!   r#   s     r   testObjEncode3zDerObjectTests.testObjEncode3L   sS    &		""ffSjq)A'B'BCCCCCr   c                 r   t          ddd          }t          d          |_        |                     |                                t          d                     t          ddd	          }t          d          |_        |                     |                                t          d
                     d S )N      T)implicitr   ppllu   ¡ppll      Fu   ppllr,   r#   s     r   testObjEncode4zDerObjectTests.testObjEncode4R   s    qd;;;iiq'8'8999t???iiq'8'899999r   c                     t          dd          }t          d          |_        |                     |                                t          d                     d S )Nr/      explicitxxll	   ¥xxllr,   r#   s     r   testObjEncode5zDerObjectTests.testObjEncode5\   sN    q)))iiq)?'@'@AAAAAr   c                     t          d          }|                    t          d                     |                     |j        t          d                     |                     |j        d           d S )Nr3   r   decoder   r    r"   
_tag_octetr#   s     r   testObjDecode1zDerObjectTests.testObjDecode1d   sd    oo

1'(()))a
mm444.....r   c                     t          d          }|                    t          d                     |                     |j        t          d          dz             |                     |j        d           d S )Nr3   u   111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111r+   r@   r#   s     r   testObjDecode2zDerObjectTests.testObjDecode2k   sh    oo

1-..///affSj111.....r   c                     t          d          }|                     t          |j        t	          d                     t          d          }|                     t          |j        t	          d                     d S )Nr3   u   ÿzr   r   r   rA   r   r#   s     r   testObjDecode3zDerObjectTests.testObjDecode3r   sc    oo*cj!4J2K2KLLLoo*cj!N2C2CDDDDDr   c                 .   t          ddd          }|                     t          |j        t	          d                     |                    t	          d                     |                     |j        t	          d                     t          ddd          }|                     t          |j        t	          d                     |                    t	          d	                     |                     |j        t	          d                     d S )
Nr3   F   )r   r1   r>   u     Tu   ¯ )r   r   r   rA   r   r    r"   r#   s     r   testObjDecode4zDerObjectTests.testObjDecode4z   s    %#>>>*cj!4F2G2GHHH

1^$$%%%aii000$===*cj!4F2G2GHHH

1^$$%%%aii00000r   c                     t          d          }|                     t          |j        t	          d                     d S )Nr3   zrH   r#   s     r   testObjDecode5zDerObjectTests.testObjDecode5   s6    oo*cj!4F2G2GHHHHHr   c                     t                      }|                    t          d                     |                     |j        d           |                     |j        t          d                     d S )Nu   ee      )r   rA   r   r    rB   r"   r#   s     r   testObjDecode6zDerObjectTests.testObjDecode6   sa    kk

1^$$%%%...aii00000r   c                    t          dd          }|                    t          d                     |                     |j        d           |                     |j        t          d                     t          dd          }|                    t          d                     |                     |j        d           |                     |j        t          d                     d S )Nr/   r7   r8   r;   r:   r   u	    xxll)r   rA   r   r    _inner_tag_octetr"   r#   s     r   testObjDecode7zDerObjectTests.testObjDecode7   s    q)))

1+,,----t444aii000 q)))

1+,,----t444aii00000r   c                     t          d          }|                     ||                    t          d                               d S )Nr3   r>   )r   r    rA   r   r#   s     r   testObjDecode8zDerObjectTests.testObjDecode8   s>    oocjj+=)>)>??@@@@@r   N)__name__
__module____qualname__r   r%   r(   r-   r5   r<   rC   rF   rI   rM   rO   rS   rV   rX    r   r   r   r   ,   s        7 7 76 6 6"> > >
D D D: : :B B B/ / // / /E E E
1 
1 
1I I I
1 1 11 1 1A A A A Ar   r   c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )DerIntegerTestsc                     t          d          }|                     |                                t          d                     d S )Nr0   r   r    r!   r   r#   s     r   	testInit1zDerIntegerTests.testInit1   s9    mmq'8'899999r   c                    t          d          }|                     |                                t          d                     t          d          }|                     |                                t          d                     t          d          }|                     |                                t          d                     d S )Nr    r0   r`      ra   r#   s     r   testEncode1zDerIntegerTests.testEncode1   s     mmq'8'8999mmq'8'8999ooq'8'899999r   c                    t          d          }|                     |                                t          d                     t          d          }|                     |                                t          d                     t          ddz            }|                     |                                t          d          t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d	          z              d S )
Nr+   u         r3                                	         ra   r#   s     r   testEncode2zDerIntegerTests.testEncode2   s    ooq);'<'<===q);'<'<===D!!	
DEE	
DEE	F	
DEE	F 	

DEE	F 	

DEE		F
 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE		F 	

DEE
	F 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE	F  	

DEE!	F" 	

DEE#	F$ 	

011%	2	3 	3 	3 	3 	3r   c                    t          d          }|                     |                                t          d                     t          d          }|                     |                                t          d                     t          d          }|                     |                                t          d                     d S )N   ÿiu   iu   þ¨¿ra   r#   s     r   testEncode3zDerIntegerTests.testEncode3   s     nnq'8'8999q'8'8999  q)?'@'@AAAAAr   c                     t          dd          }|                     |                                t          d                     d S )N4   r'   r8      £4ra   r   numbers     r   testEncode4zDerIntegerTests.testEncode4   sA    D1---!,B*C*CDDDDDr   c                    t                      }|                    t          d                     |                     |j        d           |                    t          d                     |                     |j        d           |                    t          d                     |                     |j        d           d S )Nrd   r   r`   r0   rf   re   r   rA   r   r    valuer#   s     r   testDecode1zDerIntegerTests.testDecode1   s    ll

1^$$%%%A&&&

1^$$%%%A&&&

1^$$%%%C(((((r   c                 \   t                      }|                    t          d                     |                     |j        d           |                    t          d          t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z              |                     |j        ddz             d S )Nrj   ri   rl   rm   rn   r3   rk   r{   r#   s     r   testDecode2zDerIntegerTests.testDecode2   s   ll

1'(()))5)))

	
DEE	
DEE	F	
DEE	F 	

DEE	F 	

DEE		F
 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE		F 	

DEE
	F 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE	F 	

DEE	F  	

DEE!	F" 	

DEE#	F$ 	

011%	2	3 	3 	3( 	1d7+++++r   c                    t                      }|                    t          d                     |                     |j        d           |                    t          d                     |                     |j        d           d S )Nrr   rq   u    i r{   r#   s     r   testDecode3zDerIntegerTests.testDecode3  sv    ll

1^$$%%%B'''

1'(()))F+++++r   c                    t                      }|                    t          d                     |                     |j        d           |                    t          d                     |                     |j        d           |                    t          d                     |                     |j        d           d S )Nz r0   u   ÿÿrq   r   r   r{   r#   s     r   testDecode5zDerIntegerTests.testDecode5  s    ll

1'(()))A&&&

1'(()))B'''

1Z==!!!A&&&&&r   c                     t          d          }|                    t          d                     |                     |j        d           d S )Nr'   r8   rv   ru   r{   rw   s     r   testDecode6zDerIntegerTests.testDecode6)  sK    Q'''a.//000t,,,,,r   c                     t                      }|                     ||                    t          d                               d S )Nrf   )r   r    rA   r   r#   s     r   testDecode7zDerIntegerTests.testDecode7/  s;    llcjj>):):;;<<<<<r   c                    t                      }|                    d           |                    d           |                     t          |j        dd           |                     t          |j        dd           d S )Ns    s    T)strict)r   rA   r   r   rw   s     r   testStrict1zDerIntegerTests.testStrict16  sy    )***)****fm5HQUVVV*fm5HQUVVVVVr   c                 ~    t                      }|                     t          |j        t	          d                     d S )Nu   )r   r   r   rA   r   r#   s     r   testErrDecode1zDerIntegerTests.testErrDecode1@  s4    ll*cj!4F2G2GHHHHHr   N)rY   rZ   r[   rb   rg   ro   rs   ry   r}   r   r   r   r   r   r   r   r\   r   r   r^   r^      s        : : :
: 
: 
:3 3 3>
B 
B 
BE E E) ) ), , ,:, , ,' ' '- - -= = =W W WI I I I Ir   r^   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )DerSequenceTestsc                     t          dt          d          t          d          g          }|                     |                                t          d                     d S )Nr0   r3   r   z
00 )r   r   r   r    r!   r#   s     r   rb   zDerSequenceTests.testInit1H  sO    1jmmQwZZ899q)M'N'NOOOOOr   c                    t                      }|                     |                                t          d                     |                     |                                           |                    d           |                     |                                t          d                     |                     |                                d           |                     |                    d          d           |                     |                                           |                     |                    d                     |                     |                                t          d                     d S )Nr   r   0 r0   F)	r   r    r!   r   assertFalsehasOnlyIntsappendhasInts
assertTruer#   s     r   rg   zDerSequenceTests.testEncode1L  s*   mmqzz222**+++

1q)<'='=>>>q)))U++A...))***..///q)<'='=>>>>>r   c                 n   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   r0   rq   z0)r   r   r    lenr!   r   r#   s     r   ro   zDerSequenceTests.testEncode2[  s   mm

1AS!$$$Q"""R###q)<'='=>>>AAAS!$$$Q"""q)<'='=>>>>>r   c                     t                      }|                    d           |                     |                                t	          d                     d S )Nri   u   0r   r   r    r!   r   r#   s     r   rs   zDerSequenceTests.testEncode3j  sJ    mm

5q)@'A'ABBBBBr   c                    t                      }|                    ddz             |                     |                                t	          d          t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z              d S )Nr3   rk      0rl   rm   rn   r   r#   s     r   ry   zDerSequenceTests.testEncode4p  s   mm

1d7q'9'9	
DEE(F	
DEE(F 	

DEE(F 	

DEE	(F
 	

DEE(F 	

DEE(F 	

DEE(F 	

DEE(F 	

DEE	(F 	

DEE
(F 	

DEE(F 	

DEE(F 	

DEE(F 	

DEE(F 	

DEE(F  	

DEE!(F" 	

DEE#(F$ 	

DEE%(F& 	

011'(2 	3 	3 	3 	3 	3r   c                     t                      }|dz  }|t          d          z  }|                     |                                t          d                     d S )Nr0   r   z00 )r   r   r    r!   r#   s     r   testEncode5zDerSequenceTests.testEncode5  sQ    mmqq}}q)G'H'HIIIIIr   c                    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 )Nri         0 ÿFr3   u	   0þr0   	      r'   rq   z0		)
r   r   r    r!   r   r   r   r   r   r   r#   s     r   testEncode6zDerSequenceTests.testEncode6  s   mm

5

4q)P'Q'QRRR))***..///mm

1

2q)H'I'IJJJ***U++Q///**+++..///

4Q%ABBS!$$$QRR!A'''QrTA3'''q)T'U'UVVVVVr   c                 H   t                      }|                    d           |                    t          d                     |                     |                                t          d                     |                     |                                           d S )Nri   z0   0	0)r   r   r   r    r!   r   r   r#   s     r   testEncode7zDerSequenceTests.testEncode7  s    mm

5

1())***q)Q'R'RSSS**+++++r   c                 J   t                      }|                    d           |                    t          dg                     |                     |                                t	          d                     |                     |                                           d S )Nri   r7   r   )r   r   r    r!   r   r   r   r#   s     r   testEncode8zDerSequenceTests.testEncode8  s    mm

5

;s##$$$q)Q'R'RSSS**+++++r   c                 0   t                      }|                    t          d                     |                     t	          |          d           |                    t          d                     |                     t	          |          d           |                     |d         d           |                    t          d                     |                     t	          |          d           |                     |d         d           d S )Nr   r   r   r0   r   rA   r   r    r   r#   s     r   r}   zDerSequenceTests.testDecode1  s    mm

1W::S!$$$

1())***S!$$$Q"""

1())***S!$$$Q"""""r   c                     t                      }|                    t          d                     |                     t	          |          d           |                     |d         d           d S )Nz0r0   r   re   r   r#   s     r   r   zDerSequenceTests.testDecode2  sb    mm

1())***S!$$$Q$$$$$r   c                 J   t                      }|                    t          d          t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z   t          d          z              |                     t	          |          d           |                     |d         ddz             d S )	Nr   rl   rm   rn   r0   r   r3   rk   r   r#   s     r   testDecode4zDerSequenceTests.testDecode4  s   mm

1_%%	
DEEF	
DEEF 	

DEEF 	

DEE	F
 	

DEEF 	

DEEF 	

DEEF 	

DEEF 	

DEE	F 	

DEE
F 	

DEEF 	

DEEF 	

DEEF 	

DEEF 	

DEEF  	

DEE!F" 	

DEE#F$ 	

DEE%F& 	

011'2 	3 	3 	3( 	S!$$$Q4(((((r   c                    t                      }|                    t          d                     |                     t	          |          d           |                     |d         d           |                     |d         d           d S )Nr   r3   r   ri   r0   r   r   r#   s     r   r   zDerSequenceTests.testDecode6  s|    mm

1<==>>>S!$$$Q&&&Q%%%%%r   c                    t                      }|                    t          d                     |                     t	          |          d           |                     |d         d           |                     |d         t          d                     |                     |d         t          d                     d S )	N   0
$¶c r'   r   ri   r0      $¶cr3    r   r#   s     r   r   zDerSequenceTests.testDecode7  s    mm

1DEEFFFS!$$$Q&&&Q"4 5 5666Q*.....r   c                    t                      }|                    t          d                     |                     t	          |          d           |                     |d         t          d                     |                     |d         t          d                     |                     |                                d           |                     |                    d          d           |                     |                                           |                     |                    d                     d S )N	   0$¶c r3   r   r   r0   r   F)r   rA   r   r    r   r   r   r   r#   s     r   testDecode8zDerSequenceTests.testDecode8  s	   mm

1455666S!$$$Q"4 5 5666Q*...***U++Q///**+++//00000r   c                     t                      }|                     ||                    t          d                               d S )Nr   )r   r    rA   r   r#   s     r   testDecode9zDerSequenceTests.testDecode9  s<    mmcjj+J)K)KLLMMMMMr   c                 6   t                      }|                     t          |j        t	          d                     |                     t          |j        t	          d                     |                     t          |j        t	          d                     d S )N rL   r*   r   r   r   rA   r   r#   s     r   r   zDerSequenceTests.testErrDecode1  sq    mm*cj!B%%888*cj!F))<<<*cj!F))<<<<<r   c                 ~    t                      }|                     t          |j        t	          d                     d S )Nz0  r   r#   s     r   testErrDecode2zDerSequenceTests.testErrDecode2  s3    mm*cj!N2C2CDDDDDr   c                 6   t                      }|                     t          |j        t	          d                     |                     t          |j        t	          d                     |                     t          |j        t	          d                     d S )Nz0 u   0u   0r   r#   s     r   testErrDecode3zDerSequenceTests.testErrDecode3  sz    mm*cj!4N2O2OPPP*cj!4N2O2OPPP*cj!4N2O2OPPPPPr   c                    t          g d                                          }t                                          |d           t                                          |d           |                     t          t                      j        |d           |                     t          t                      j        |d           d S )Nr0   r3   r'   r'   )nr_elements)r3   r'   r0   )r   r7   r   r!   rA   r   r   )r   der_bins     r   test_expected_nr_elementsz*DerSequenceTests.test_expected_nr_elements"  s    iii((//11W!444W%888*kmm&:GQRSSS*kmm&:GQVWWWWWr   c                    t          g d                                          }t          ddt          ddg          g                                          }t                                          |d           t                                          |d           t                                          |d           |                     t          t                      j        |d           d S )	Nr   r0   r3   r'   r   T)only_ints_expectedFr   )r   der_bin1der_bin2s      r   test_expected_only_integersz,DerSequenceTests.test_expected_only_integers*  s    yyy))00221k1a&&9&9:;;BBDDX$???X%@@@X%@@@*kmm&:HY]^^^^^r   N)rY   rZ   r[   rb   rg   ro   rs   ry   r   r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   r\   r   r   r   r   F  sl       P P P? ? ?? ? ?C C C3 3 32J J JW W W2, , ,, , ,# # #% % %) ) )4& & &/ / /
1 
1 
1N N N= = =E E E
Q Q QX X X_ _ _ _ _r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )DerOctetStringTestsc                     t          t          d                    }|                     |                                t          d                     d S )N   ÿu   ÿ)r
   r   r    r!   r#   s     r   rb   zDerOctetStringTests.testInit17  sA    QvYY''q'8'899999r   c                    t                      }|                     |                                t          d                     t          d          |_        |                     |                                t          d                     d S )N r?   )r
   r    r!   r   r"   r#   s     r   rg   zDerOctetStringTests.testEncode1;  sk    q}}555
mmq);'<'<=====r   c                 J   t                      }|                    t          d                     |                     |j        t          d                     |                    t          d                     |                     |j        t          d                     d S )Nr   r   r   r?   )r
   rA   r   r    r"   r#   s     r   r}   zDerOctetStringTests.testDecode1E  s    

1Z==!!!aee,,,

1'(()))a
mm44444r   c                     t                      }|                     ||                    t          d                               d S )Nr   )r
   r    rA   r   r#   s     r   r   zDerOctetStringTests.testDecode2N  s;    cjj:7788888r   c                 ~    t                      }|                     t          |j        t	          d                     d S )Nu   ÿ)r
   r   r   rA   r   r#   s     r   r   z"DerOctetStringTests.testErrDecode1S  s6    *cj!4F2G2GHHHHHr   N)rY   rZ   r[   rb   rg   r}   r   r   r\   r   r   r   r   5  sd        : : :> > >5 5 59 9 9
I I I I Ir   r   c                       e Zd Zd Zd ZdS )DerNullTestsc                     t                      }|                     |                                t          d                     d S Nz )r	   r    r!   r   r#   s     r   rg   zDerNullTests.testEncode1Z  s5    iiq}}55555r   c                     t                      }|                     ||                    t          d                               d S r   )r	   r    rA   r   r#   s     r   r}   zDerNullTests.testDecode1`  s9    iicjj:7788888r   N)rY   rZ   r[   rg   r}   r\   r   r   r   r   X  s2        6 6 69 9 9 9 9r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	DerObjectIdTestsc                 t    t          d          }|                     |                                d           d S )Nz1.1s   ))r   r    r!   r#   s     r   rb   zDerObjectIdTests.testInit1g  s3    %  |44444r   c                 \   t          d          }|                     |                                d           t                      }d|_        |                     |                                d           t          d          }|                     |                                d           d S )N1.2.840.113549.1.1.1   	*H
2.999.1234   7R)r   r    r!   r|   r#   s     r   rg   zDerObjectIdTests.testEncode1k  s    011'VWWWmm*	'VWWW,'''BCCCCCr   c                     t          d          }|                     t          |j                   t          d          }|                     t          |j                   d S )Nz3.4z1.40)r   r   r   r!   r#   s     r   ro   zDerObjectIdTests.testEncode2v  sR    %  *cj111&!!*cj11111r   c                     t                      }|                    d           |                     |j        d           d S )Nr   r   r   rA   r    r|   r#   s     r   r}   zDerObjectIdTests.testDecode1  s=    mm

BCCC$:;;;;;r   c                 t    t                      }|                     ||                    d                     d S )Nr   )r   r    rA   r#   s     r   r   zDerObjectIdTests.testDecode2  sD    mm

JKK	M 	M 	M 	M 	Mr   c                     t                      }|                    d           |                     |j        d           d S )Ns   	*H z1.2.840.113549.1.0.1r   r#   s     r   r   zDerObjectIdTests.testDecode3  s=    mm

BCCC$:;;;;;r   c                     t                      }|                    d           |                     |j        d           d S )Nr   r   r   r#   s     r   r   zDerObjectIdTests.testDecode4  s<    mm

.///L11111r   N)
rY   rZ   r[   rb   rg   ro   r}   r   r   r   r\   r   r   r   r   e  s        5 5 5	D 	D 	D2 2 2< < <M M M< < <
2 2 2 2 2r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )DerBitStringTestsc                     t          t          d                    }|                     |                                t          d                     d S )Nr   u    ÿ)r   r   r    r!   r#   s     r   rb   zDerBitStringTests.testInit1  sB    1V99%%q);'<'<=====r   c                     t          t          d                    }|                     |                                t	          d                     d S )Nr0   z )r   r   r    r!   r   r#   s     r   	testInit2zDerBitStringTests.testInit2  sB    :a==))q)C'D'DEEEEEr   c                    t                      }|                     |                                t          d                     t          t          d                    }|                     |                                t          d                     t                      }t          d          |_        |                     |                                t          d                     d S )Nz r?    )r   r    r!   r   r|   r#   s     r   rg   zDerBitStringTests.testEncode1  s    nnq'8'89991Z==))q)?'@'@AAAnnjMM	q)?'@'@AAAAAr   c                 J   t                      }|                    t          d                     |                     |j        t          d                     |                    t          d                     |                     |j        t          d                     d S )N r   r   r?   )r   rA   r   r    r|   r#   s     r   r}   zDerBitStringTests.testDecode1  s    nn

1Z==!!!AbEE***

1+,,---AjMM22222r   c                     t                      }|                     ||                    t          d                               d S )Nr   )r   r    rA   r   r#   s     r   r   zDerBitStringTests.testDecode2  s9    nncjj:7788888r   N)rY   rZ   r[   rb   r   rg   r}   r   r\   r   r   r   r     se        > > >F F F
B 
B 
B3 3 39 9 9 9 9r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )DerSetOfTestsc                     t          t          d          t          d          g          }|                     |                                t	          d                     d S )Nr0   r3   z1)r   r   r    r!   r   r#   s     r   rb   zDerSetOfTests.testInit1  sM    
1z!}}566q)H'I'IJJJJJr   c                    t                      }|                     |                                t          d                     |                    d           |                     |                                t          d                     |                     |                                t          d                     d S )N1 r   1 )r   r    r!   r   addr#   s     r   rg   zDerSetOfTests.testEncode1  s    jjqzz222


q)<'='=>>>q)<'='=>>>>>r   c                 l   t                      }|                    d           |                    d           |                     |                                t	          d                     t          ddg          }|                     |                                t	          d                     d S )Nri   r   u   1 ÿ)r   r   r    r!   r   r#   s     r   ro   zDerSetOfTests.testEncode2  s    jjq)P'Q'QRRRt}%%q)P'Q'QRRRRRr   c                     t                      }|                    d           |                     t          |j        t	          d                     d S )Nri   z   )r   r   r   r   r   r#   s     r   rs   zDerSetOfTests.testEncode3  sC    jj*cgq1C/D/DEEEEEr   c                    t                      }|                    t          d                     |                    t          d                     |                     |                                t          d                     d S )Nz zz1 )r   r   r   r    r!   r#   s     r   ry   zDerSetOfTests.testEncode4  sj    jj*.!!"""q)D'E'EFFFFFr   c                 ~   t                      }|                    t          d                     |                     t	          |          d           |                    t          d                     |                     t	          |          d           |                     t          |          dg           d S )Nr   r   r   r0   )r   rA   r   r    r   listr#   s     r   r}   zDerSetOfTests.testDecode1  s    jj

1W::S!$$$

1())***S!$$$cA3'''''r   c                 &   t                      }|                    t          d                     |                     t	          |          d           t          |          }|                     d|v            |                     d|v            d S )N   1 ÿr3   ri   r   )r   rA   r   r    r   r   r   )r   r$   ls      r   r   zDerSetOfTests.testDecode2  s    jj

1<==>>>S!$$$II
###	"""""r   c                 ~    t                      }|                     t          |j        t	          d                     d S )Nr   r   r   r   rA   r   r#   s     r   r   zDerSetOfTests.testDecode3  sD    jj*cj=>>	@ 	@ 	@ 	@ 	@r   c                     t                      }|                     ||                    t          d                               d S )Nr   )r   r    rA   r   r#   s     r   r   zDerSetOfTests.testDecode4   sL    jj

1DEEFF	H 	H 	H 	H 	Hr   c                 ~    t                      }|                     t          |j        t	          d                     d S )Nu   1 ÿªr  r#   s     r   r   zDerSetOfTests.testErrDecode1  s?    jj*cj9::	< 	< 	< 	< 	<r   N)rY   rZ   r[   rb   rg   ro   rs   ry   r}   r   r   r   r   r\   r   r   r   r     s        K K K? ? ?S S SF F FG G G( ( (# # #@ @ @H H H< < < < <r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )DerBooleanTestsc                 t    t          d          }|                     |                                d           d S )NF    r   r    r!   r#   s     r   rg   zDerBooleanTests.testEncode1  s3    77777r   c                 t    t          d          }|                     |                                d           d S )NT   r
  r#   s     r   ro   zDerBooleanTests.testEncode2  s3    77777r   c                 x    t          dd          }|                     |                                d           d S )NF   r1       r
  r#   s     r   rs   zDerBooleanTests.testEncode3  s8    ...77777r   c                 x    t          dd          }|                     |                                d           d S )NFr7   r8       r
  r#   s     r   ry   zDerBooleanTests.testEncode4  s9    ...'>?????r   c                     t                      }|                    d           |                     |j        d           d S )Nr	  Fr   rA   r    r|   r#   s     r   r}   zDerBooleanTests.testDecode1"  s;    ll

?###E*****r   c                     t                      }|                    d           |                     |j        d           d S )Nr  Tr  r#   s     r   r   zDerBooleanTests.testDecode2'  s;    ll

?###D)))))r   c                     t          d          }|                    d           |                     |j        d           d S )Nr  r  r  Fr  r#   s     r   r   zDerBooleanTests.testDecode3,  sB    $'''

?###E*****r   c                     t          d          }|                    d           |                     |j        d           d S )Nr7   r8   r  Fr  r#   s     r   r   zDerBooleanTests.testDecode41  sC    $'''

*+++E*****r   c                 d    t                      }|                     t          |j        d           d S )Ns    r   r   r   rA   r#   s     r   testErrorDecode1z DerBooleanTests.testErrorDecode16  s+    ll*cj/BBBBBr   c                 d    t                      }|                     t          |j        d           d S )Ns    r  r#   s     r   testErrorDecode2z DerBooleanTests.testErrorDecode2;  s,    ll*cj2EFFFFFr   N)rY   rZ   r[   rg   ro   rs   ry   r}   r   r   r   r  r  r\   r   r   r  r    s        8 8 88 8 88 8 8@ @ @
+ + +
* * *
+ + +
+ + +
C C C
G G G G Gr   r  c                 l   ddl m} g }| |t                    z  }| |t                    z  }| |t                    z  }| |t
                    z  }| |t                    z  }| |t                    z  }| |t                    z  }| |t                    z  }| |t                    z  }|S )Nr   )list_test_cases)Cryptodome.SelfTest.st_commonr  r   r^   r   r   r   r   r   r   r  )configr  	listTestss      r   	get_testsr"  A  s    ======I000I111I!1222I!4555I...I!1222I!2333I///I111Ir   __main__c                  B    t          j        t                                S )N)unittest	TestSuiter"  r\   r   r   <lambda>r'  P  s    H&y{{33 r   suite)defaultTest)__doc__r%  Cryptodome.Util.py3compatCryptodome.Util.asn1r   r   r   r   r   r	   r
   r   r   TestCaser   r^   r   r   r   r   r   r   r  r"  rY   r(  mainr\   r   r   <module>r/     s  D * )  ' ' ' '6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
vA vA vA vA vAX& vA vA vAp_I _I _I _I _Ih' _I _I _IDl_ l_ l_ l_ l_x( l_ l_ l_^!I !I !I !I !I(+ !I !I !IF9 9 9 9 98$ 9 9 9.2 .2 .2 .2 .2x( .2 .2 .2b$9 $9 $9 $9 $9) $9 $9 $9NO< O< O< O< O<H% O< O< O<d/G /G /G /G /Gh' /G /G /Gd      z33EHMg&&&&&& r   