
    iz                         S r SSKrSSK7  SSKJrJrJrJrJrJ	r	J
r
JrJr   " S S\R                  5      r " S S\R                  5      r " S	 S
\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r0 4S jr\S:X  a  S r\R4                  " SS9  gg)zSelf-tests for Crypto.Util.asn1    N)*)		DerObjectDerSetOf
DerIntegerDerBitStringDerObjectIdDerNullDerOctetStringDerSequence
DerBooleanc                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)DerObjectTests,   c                     U R                  [        [        [        S5      5        U R                  [        [        S5        g )Nu       )assertRaises
ValueErrorr   b)selfs    Y/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Util/test_asn1.pytestObjInit1DerObjectTests.testObjInit1.   s*    *i:?*i6    c                 B   [        [        S5      5      nU R                  UR                  5       [        S5      5        [        S5      Ul        U R                  UR                  5       [        S5      5        U R                  UR                  5       [        S5      5        [        S5      n[        S5      Ul        U R                  UR                  5       [        S5      5        [        [        S5      SS	9nU R                  UR                  5       [        S
5      5        g )N EzE   zET)constructed0 )r   r   assertEqualencodepayloadr   ders     r   testObjEncode1DerObjectTests.testObjEncode16   s    &	"q}5iq'89q'89oiq'89&	t4q}5r   c                     [        S[        S5      5      nU R                  UR                  5       [        S5      5        g )N   zz)r   r   r"   r#   r%   s     r   testObjEncode2DerObjectTests.testObjEncode2G   s.    a
m,q);'<=r   c                     [        [        S5      5      n[        S5      S-  Ul        U R                  UR	                  5       [        S5      5        g )Nr   0   u   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000r   r   r$   r"   r#   r%   s     r   testObjEncode3DerObjectTests.testObjEncode3L   s;    &	"fSjq)A'BCr   c                    [        SSSS9n[        S5      Ul        U R                  UR	                  5       [        S5      5        [        SSS	S9n[        S5      Ul        U R                  UR	                  5       [        S
5      5        g )N      T)implicitr    ppllu   ¡ppll      Fu   ppllr0   r%   s     r   testObjEncode4DerObjectTests.testObjEncode4R   sj    qd;iq'89t?iq'89r   c                     [        SSS9n[        S5      Ul        U R                  UR	                  5       [        S5      5        g )Nr4      explicitxxll	   ¥xxllr0   r%   s     r   testObjEncode5DerObjectTests.testObjEncode5\   s5    q)iq)?'@Ar   c                     [        S5      nUR                  [        S5      5        U R                  UR                  [        S5      5        U R                  UR
                  S5        g )Nr8   r   decoder   r"   r$   
_tag_octetr%   s     r   testObjDecode1DerObjectTests.testObjDecode1d   sI    o

1'()a
m4.r   c                     [        S5      nUR                  [        S5      5        U R                  UR                  [        S5      S-  5        U R                  UR
                  S5        g )Nr8   u   111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111r/   rG   r%   s     r   testObjDecode2DerObjectTests.testObjDecode2k   sM    o

1-./afSj1.r   c                     [        S5      nU R                  [        UR                  [	        S5      5        [        S5      nU R                  [        UR                  [	        S5      5        g )Nr8   u   ÿzr   r   r   rH   r   r%   s     r   testObjDecode3DerObjectTests.testObjDecode3r   sK    o*cjj!4J2KLo*cjj!N2CDr   c                    [        SSSS9nU R                  [        UR                  [	        S5      5        UR                  [	        S5      5        U R                  UR                  [	        S5      5        [        SSSS9nU R                  [        UR                  [	        S5      5        UR                  [	        S	5      5        U R                  UR                  [	        S5      5        g )
Nr8   F   )r    r6   rE   u     Tu   ¯ )r   r   r   rH   r   r"   r$   r%   s     r   testObjDecode4DerObjectTests.testObjDecode4z   s    %#>*cjj!4F2GH

1^$%ai0$=*cjj!4F2GH

1^$%ai0r   c                 n    [        S5      nU R                  [        UR                  [	        S5      5        g )Nr8   zrQ   r%   s     r   testObjDecode5DerObjectTests.testObjDecode5   s'    o*cjj!4F2GHr   c                     [        5       nUR                  [        S5      5        U R                  UR                  S5        U R                  UR
                  [        S5      5        g )Nu   ee      )r   rH   r   r"   rI   r$   r%   s     r   testObjDecode6DerObjectTests.testObjDecode6   sF    k

1^$%.ai0r   c                    [        SSS9nUR                  [        S5      5        U R                  UR                  S5        U R                  UR
                  [        S5      5        [        SSS9nUR                  [        S5      5        U R                  UR                  S5        U R                  UR
                  [        S5      5        g )Nr4   r=   r>   rA   r@   r   u	    xxll)r   rH   r   r"   _inner_tag_octetr$   r%   s     r   testObjDecode7DerObjectTests.testObjDecode7   s    q)

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

1+,---t4ai0r   c                 l    [        S5      nU R                  XR                  [        S5      5      5        g )Nr8   rE   )r   r"   rH   r   r%   s     r   testObjDecode8DerObjectTests.testObjDecode8   s(    ojj+=)>?@r    N)__name__
__module____qualname____firstlineno__r   r'   r+   r1   r:   rB   rJ   rN   rR   rW   rZ   r_   rc   rf   __static_attributes__rh   r   r   r   r   ,   sM    76">
D:B//E
1I
11Ar   r   c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)DerIntegerTests   c                 l    [        S5      nU R                  UR                  5       [        S5      5        g )Nr5   r   r"   r#   r   r%   s     r   	testInit1DerIntegerTests.testInit1   s&    mq'89r   c                 <   [        S5      nU R                  UR                  5       [        S5      5        [        S5      nU R                  UR                  5       [        S5      5        [        S5      nU R                  UR                  5       [        S5      5        g )Nr    r5   rr      rs   r%   s     r   testEncode1DerIntegerTests.testEncode1   sp     mq'89mq'89oq'89r   c                    [        S5      nU R                  UR                  5       [        S5      5        [        S5      nU R                  UR                  5       [        S5      5        [        SS-  5      nU R                  UR                  5       [        S5      [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S	5      -   5        g )
Nr/   u         r8                                	         rs   r%   s     r   testEncode2DerIntegerTests.testEncode2   s    oq);'<=q);'<=D!	
DE	
DE	F	
DE	F 	

DE	F 	

DE		F
 	

DE	F 	

DE	F 	

DE	F 	

DE	F 	

DE		F 	

DE
	F 	

DE	F 	

DE	F 	

DE	F 	

DE	F 	

DE	F  	

DE!	F" 	

DE#	F$ 	

01%	2	3r   c                 <   [        S5      nU R                  UR                  5       [        S5      5        [        S5      nU R                  UR                  5       [        S5      5        [        S5      nU R                  UR                  5       [        S5      5        g )N   ÿiu   iu   þ¨¿rs   r%   s     r   testEncode3DerIntegerTests.testEncode3   ss     nq'89q'89 q)?'@Ar   c                 j    [        SSS9nU R                  UR                  5       [        S5      5        g )N4   r*   r>      £4rs   r   numbers     r   testEncode4DerIntegerTests.testEncode4   s*    D1-!,B*CDr   c                 \   [        5       nUR                  [        S5      5        U R                  UR                  S5        UR                  [        S5      5        U R                  UR                  S5        UR                  [        S5      5        U R                  UR                  S5        g )Nrw   r   rr   r5   ry   rx   r   rH   r   r"   valuer%   s     r   testDecode1DerIntegerTests.testDecode1   sx    l

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

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

1^$%C(r   c                    [        5       nUR                  [        S5      5        U R                  UR                  S5        UR                  [        S5      [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   5        U R                  UR                  SS-  5        g )Nr~   r}   r   r   r   r8   r   r   r%   s     r   testDecode2DerIntegerTests.testDecode2   s   l

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

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

DE	F 	

DE		F
 	

DE	F 	

DE	F 	

DE	F 	

DE	F 	

DE		F 	

DE
	F 	

DE	F 	

DE	F 	

DE	F 	

DE	F 	

DE	F  	

DE!	F" 	

DE#	F$ 	

01%	2	3( 	1d7+r   c                     [        5       nUR                  [        S5      5        U R                  UR                  S5        UR                  [        S5      5        U R                  UR                  S5        g )Nr   r   u    i r   r%   s     r   testDecode3DerIntegerTests.testDecode3  sT    l

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

1'()F+r   c                 \   [        5       nUR                  [        S5      5        U R                  UR                  S5        UR                  [        S5      5        U R                  UR                  S5        UR                  [        S5      5        U R                  UR                  S5        g )Nz r5   u   ÿÿr   r   r   r   r%   s     r   testDecode5DerIntegerTests.testDecode5  sy    l

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

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

1Z=!A&r   c                     [        SS9nUR                  [        S5      5        U R                  UR                  S5        g )Nr*   r>   r   r   r   r   s     r   testDecode6DerIntegerTests.testDecode6)  s2    Q'a./0t,r   c                 j    [        5       nU R                  XR                  [        S5      5      5        g )Nry   )r   r"   rH   r   r%   s     r   testDecode7DerIntegerTests.testDecode7/  s%    ljj>):;<r   c                     [        5       nUR                  S5        UR                  S5        U R                  [        UR                  SSS9  U R                  [        UR                  SSS9  g )Ns    s    T)strict)r   rH   r   r   r   s     r   testStrict1DerIntegerTests.testStrict16  s]    )*)**fmm5HQUV*fmm5HQUVr   c                 l    [        5       nU R                  [        UR                  [	        S5      5        g )Nu   )r   r   r   rH   r   r%   s     r   testErrDecode1DerIntegerTests.testErrDecode1@  s%    l*cjj!4F2GHr   rh   N)ri   rj   rk   rl   rt   rz   r   r   r   r   r   r   r   r   r   r   r   rm   rh   r   r   ro   ro      sG    :
:3>
BE),:,'-=WIr   ro   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)DerSequenceTestsiF  c                     [        S[        S5      [        S5      /5      nU R                  UR	                  5       [        S5      5        g )Nr5   r8   r!   z
00 )r   r   r   r"   r#   r%   s     r   rt   DerSequenceTests.testInit1H  s7    1jmQwZ89q)M'NOr   c                 n   [        5       nU R                  UR                  5       [        S5      5        U R	                  UR                  5       5        UR                  S5        U R                  UR                  5       [        S5      5        U R                  UR                  5       S5        U R                  UR                  S5      S5        U R                  UR                  5       5        U R                  UR                  S5      5        U R                  UR                  5       [        S5      5        g )Nr!   r   0 r5   F)	r   r"   r#   r   assertFalsehasOnlyIntsappendhasInts
assertTruer%   s     r   rz   DerSequenceTests.testEncode1L  s    mqz2*+

1q)<'=>q)U+A.)*./q)<'=>r   c                    [        5       nUR                  S5        SUS'   U R                  [        U5      S5        U R                  US   S5        U R                  US   S5        U R                  UR	                  5       [        S5      5        S/US S & U R                  [        U5      S5        U R                  US   S5        U R                  UR	                  5       [        S5      5        g )Nr   r5   r   z0)r   r   r"   lenr#   r   r%   s     r   r   DerSequenceTests.testEncode2[  s    m

1AS!$Q"R#q)<'=>AS!$Q"q)<'=>r   c                     [        5       nUR                  S5        U R                  UR                  5       [	        S5      5        g )Nr}   u   0r   r   r"   r#   r   r%   s     r   r   DerSequenceTests.testEncode3j  s1    m

5q)@'ABr   c                 Z   [        5       nUR                  SS-  5        U R                  UR                  5       [	        S5      [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   [	        S5      -   5        g )Nr8   r      0r   r   r   r   r%   s     r   r   DerSequenceTests.testEncode4p  st   m

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

DE(F 	

DE	(F
 	

DE(F 	

DE(F 	

DE(F 	

DE(F 	

DE	(F 	

DE
(F 	

DE(F 	

DE(F 	

DE(F 	

DE(F 	

DE(F  	

DE!(F" 	

DE#(F$ 	

DE%(F& 	

01'(2 	3r   c                     [        5       nUS-  nU[        S5      -  nU R                  UR                  5       [        S5      5        g )Nr5   r!   z00 )r   r   r"   r#   r%   s     r   testEncode5DerSequenceTests.testEncode5  s<    mqq}q)G'HIr   c                    [        5       nUR                  S5        UR                  S5        U R                  UR                  5       [	        S5      5        U R                  UR                  5       5        U R                  UR                  S5      5        [        5       nUR                  S5        UR                  S5        U R                  UR                  5       [	        S5      5        U R                  UR                  5       S5        U R                  UR                  S5      S5        U R                  UR                  5       5        U R                  UR                  S5      5        UR                  S5        S	S
/USS & U R                  [        U5      S5        U R                  USS  S	S
/5        U R                  USS S	/5        U R                  UR                  5       [	        S5      5        g )Nr}         0 ÿFr8   u	   0þr5   	      r*   r   z0		)
r   r   r"   r#   r   r   r   r   r   r   r%   s     r   testEncode6DerSequenceTests.testEncode6  st   m

5

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

1

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

4Q%ABS!$QR!A'QrA3'q)T'UVr   c                     [        5       nUR                  S5        UR                  [        S5      5        U R                  UR	                  5       [        S5      5        U R                  UR                  5       5        g )Nr}   z0   0	0)r   r   r   r"   r#   r   r   r%   s     r   testEncode7DerSequenceTests.testEncode7  sX    m

5

1()*q)Q'RS*+r   c                     [        5       nUR                  S5        UR                  [        S/5      5        U R                  UR                  5       [	        S5      5        U R                  UR                  5       5        g )Nr}   r=   r   )r   r   r"   r#   r   r   r   r%   s     r   testEncode8DerSequenceTests.testEncode8  sY    m

5

;s#$q)Q'RS*+r   c                    [        5       nUR                  [        S5      5        U R                  [	        U5      S5        UR                  [        S5      5        U R                  [	        U5      S5        U R                  US   S5        UR                  [        S5      5        U R                  [	        U5      S5        U R                  US   S5        g )Nr!   r   r   r5   r   rH   r   r"   r   r%   s     r   r   DerSequenceTests.testDecode1  s    m

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

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

1()*S!$Q"r   c                     [        5       nUR                  [        S5      5        U R                  [	        U5      S5        U R                  US   S5        g )Nz0r5   r   rx   r   r%   s     r   r   DerSequenceTests.testDecode2  sC    m

1()*S!$Q$r   c                 z   [        5       nUR                  [        S5      [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   [        S5      -   5        U R                  [	        U5      S5        U R                  US   SS-  5        g )	Nr   r   r   r   r5   r   r8   r   r   r%   s     r   testDecode4DerSequenceTests.testDecode4  s   m

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

DEF 	

DE	F
 	

DEF 	

DEF 	

DEF 	

DEF 	

DE	F 	

DE
F 	

DEF 	

DEF 	

DEF 	

DEF 	

DEF  	

DE!F" 	

DE#F$ 	

DE%F& 	

01'2 	3( 	S!$Q4(r   c                     [        5       nUR                  [        S5      5        U R                  [	        U5      S5        U R                  US   S5        U R                  US   S5        g )Nr   r8   r   r}   r5   r   r   r%   s     r   r   DerSequenceTests.testDecode6  sW    m

1<=>S!$Q&Q%r   c                 $   [        5       nUR                  [        S5      5        U R                  [	        U5      S5        U R                  US   S5        U R                  US   [        S5      5        U R                  US   [        S5      5        g )	N   0
$¶c r*   r   r}   r5      $¶cr8    r   r%   s     r   r   DerSequenceTests.testDecode7  su    m

1DEFS!$Q&Q"4 56Q*.r   c                    [        5       nUR                  [        S5      5        U R                  [	        U5      S5        U R                  US   [        S5      5        U R                  US   [        S5      5        U R                  UR                  5       S5        U R                  UR                  S5      S5        U R                  UR                  5       5        U R                  UR                  S5      5        g )N	   0$¶c r8   r   r   r5   r   F)r   rH   r   r"   r   r   r   r   r%   s     r   testDecode8DerSequenceTests.testDecode8  s    m

1456S!$Q"4 56Q*.*U+Q/*+/0r   c                 j    [        5       nU R                  XR                  [        S5      5      5        g )Nr   )r   r"   rH   r   r%   s     r   testDecode9DerSequenceTests.testDecode9  s&    mjj+J)KLMr   c                    [        5       nU R                  [        UR                  [	        S5      5        U R                  [        UR                  [	        S5      5        U R                  [        UR                  [	        S5      5        g )N rV   r.   r   r   r   rH   r   r%   s     r   r   DerSequenceTests.testErrDecode1  sW    m*cjj!B%8*cjj!F)<*cjj!F)<r   c                 l    [        5       nU R                  [        UR                  [	        S5      5        g )Nz0  r   r%   s     r   testErrDecode2DerSequenceTests.testErrDecode2  s$    m*cjj!N2CDr   c                    [        5       nU R                  [        UR                  [	        S5      5        U R                  [        UR                  [	        S5      5        U R                  [        UR                  [	        S5      5        g )Nz0 u   0u   0r   r%   s     r   testErrDecode3DerSequenceTests.testErrDecode3  s]    m*cjj!4N2OP*cjj!4N2OP*cjj!4N2OPr   c                 :   [        / SQ5      R                  5       n[        5       R                  USS9  [        5       R                  USS9  U R                  [        [        5       R                  USS9  U R                  [        [        5       R                  USS9  g )Nr5   r8   r*   r*   )nr_elements)r8   r*   r5   )r   r=   r   r#   rH   r   r   )r   der_bins     r   test_expected_nr_elements*DerSequenceTests.test_expected_nr_elements"  s    i(//1W!4W%8*km&:&:GQRS*km&:&:GQVWr   c                 h   [        / SQ5      R                  5       n[        SS[        SS/5      /5      R                  5       n[        5       R                  USS9  [        5       R                  USS9  [        5       R                  USS9  U R                  [        [        5       R                  USS9  g )	Nr   r5   r8   r*   r   T)only_ints_expectedFr   )r   der_bin1der_bin2s      r   test_expected_only_integers,DerSequenceTests.test_expected_only_integers*  s    y)0021k1a&&9:;BBDX$?X%@X%@*km&:&:HY]^r   rh   N)ri   rj   rk   rl   rt   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   rh   r   r   r   r   F  st    P??C32JW2,,#%)4&/
1N=E
QX_r   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	DerOctetStringTestsi5  c                 ~    [        [        S5      5      nU R                  UR                  5       [        S5      5        g )N   ÿu   ÿ)r
   r   r"   r#   r%   s     r   rt   DerOctetStringTests.testInit17  s+    QvY'q'89r   c                     [        5       nU R                  UR                  5       [        S5      5        [        S5      Ul        U R                  UR                  5       [        S5      5        g )N rF   )r
   r"   r#   r   r$   r%   s     r   rz   DerOctetStringTests.testEncode1;  sK    q}5
mq);'<=r   c                    [        5       nUR                  [        S5      5        U R                  UR                  [        S5      5        UR                  [        S5      5        U R                  UR                  [        S5      5        g )Nr  r   r  rF   )r
   rH   r   r"   r$   r%   s     r   r   DerOctetStringTests.testDecode1E  s\    

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

1'()a
m4r   c                 j    [        5       nU R                  XR                  [        S5      5      5        g )Nr  )r
   r"   rH   r   r%   s     r   r   DerOctetStringTests.testDecode2N  s%    jj:78r   c                 l    [        5       nU R                  [        UR                  [	        S5      5        g )Nu   ÿ)r
   r   r   rH   r   r%   s     r   r   "DerOctetStringTests.testErrDecode1S  s&    *cjj!4F2GHr   rh   N)
ri   rj   rk   rl   rt   rz   r   r   r   rm   rh   r   r   r  r  5  s    :>59
Ir   r  c                        \ rS rSrS rS rSrg)DerNullTestsiX  c                 j    [        5       nU R                  UR                  5       [        S5      5        g Nz )r	   r"   r#   r   r%   s     r   rz   DerNullTests.testEncode1Z  s#    iq}5r   c                 j    [        5       nU R                  XR                  [        S5      5      5        g r  )r	   r"   rH   r   r%   s     r   r   DerNullTests.testDecode1`  s$    ijj:78r   rh   N)ri   rj   rk   rl   rz   r   rm   rh   r   r   r  r  X  s    69r   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)DerObjectIdTestsie  c                 Z    [        S5      nU R                  UR                  5       S5        g )Nz1.1s   ))r   r"   r#   r%   s     r   rt   DerObjectIdTests.testInit1g  s"    % |4r   c                    [        S5      nU R                  UR                  5       S5        [        5       nSUl        U R                  UR                  5       S5        [        S5      nU R                  UR                  5       S5        g )N1.2.840.113549.1.1.1   	*H
2.999.1234   7R)r   r"   r#   r   r%   s     r   rz   DerObjectIdTests.testEncode1k  sj    01'VWm*	'VW,''BCr   c                     [        S5      nU R                  [        UR                  5        [        S5      nU R                  [        UR                  5        g )Nz3.4z1.40)r   r   r   r#   r%   s     r   r   DerObjectIdTests.testEncode2v  s>    % *cjj1&!*cjj1r   c                 r    [        5       nUR                  S5        U R                  UR                  S5        g )Nr  r  r   rH   r"   r   r%   s     r   r   DerObjectIdTests.testDecode1  s+    m

BC$:;r   c                 Z    [        5       nU R                  UUR                  S5      5        g )Nr  )r   r"   rH   r%   s     r   r   DerObjectIdTests.testDecode2  s'    m

JK	Mr   c                 r    [        5       nUR                  S5        U R                  UR                  S5        g )Ns   	*H z1.2.840.113549.1.0.1r#  r%   s     r   r   DerObjectIdTests.testDecode3  s+    m

BC$:;r   c                 r    [        5       nUR                  S5        U R                  UR                  S5        g )Nr  r  r#  r%   s     r   r   DerObjectIdTests.testDecode4  s*    m

./L1r   rh   N)ri   rj   rk   rl   rt   rz   r   r   r   r   r   rm   rh   r   r   r  r  e  s'    5	D2<M<
2r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	DerBitStringTestsi  c                 ~    [        [        S5      5      nU R                  UR                  5       [        S5      5        g )Nr  u    ÿ)r   r   r"   r#   r%   s     r   rt   DerBitStringTests.testInit1  s,    1V9%q);'<=r   c                 ~    [        [        S5      5      nU R                  UR                  5       [	        S5      5        g )Nr5   z )r   r   r"   r#   r   r%   s     r   	testInit2DerBitStringTests.testInit2  s,    :a=)q)C'DEr   c                 j   [        5       nU R                  UR                  5       [        S5      5        [        [        S5      5      nU R                  UR                  5       [        S5      5        [        5       n[        S5      Ul        U R                  UR                  5       [        S5      5        g )Nz rF    )r   r"   r#   r   r   r%   s     r   rz   DerBitStringTests.testEncode1  s|    nq'891Z=)q)?'@AnjM	q)?'@Ar   c                    [        5       nUR                  [        S5      5        U R                  UR                  [        S5      5        UR                  [        S5      5        U R                  UR                  [        S5      5        g )N r   r3  rF   )r   rH   r   r"   r   r%   s     r   r   DerBitStringTests.testDecode1  s[    n

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

1+,-AjM2r   c                 j    [        5       nU R                  XR                  [        S5      5      5        g )Nr6  )r   r"   rH   r   r%   s     r   r   DerBitStringTests.testDecode2  s$    njj:78r   rh   N)
ri   rj   rk   rl   rt   r0  rz   r   r   rm   rh   r   r   r,  r,    s    >F
B39r   r,  c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)DerSetOfTestsi  c                     [        [        S5      [        S5      /5      nU R                  UR                  5       [	        S5      5        g )Nr5   r8   z1)r   r   r"   r#   r   r%   s     r   rt   DerSetOfTests.testInit1  s5    
1z!}56q)H'IJr   c                 0   [        5       nU R                  UR                  5       [        S5      5        UR	                  S5        U R                  UR                  5       [        S5      5        U R                  UR                  5       [        S5      5        g )N1 r   1 )r   r"   r#   r   addr%   s     r   rz   DerSetOfTests.testEncode1  sf    jqz2
q)<'=>q)<'=>r   c                    [        5       nUR                  S5        UR                  S5        U R                  UR                  5       [	        S5      5        [        SS/5      nU R                  UR                  5       [	        S5      5        g )Nr}   r   u   1 ÿ)r   rA  r"   r#   r   r%   s     r   r   DerSetOfTests.testEncode2  se    jq)P'QRt}%q)P'QRr   c                     [        5       nUR                  S5        U R                  [        UR                  [	        S5      5        g )Nr}   z   )r   rA  r   r   r   r%   s     r   r   DerSetOfTests.testEncode3  s0    j*cggq1C/DEr   c                     [        5       nUR                  [        S5      5        UR                  [        S5      5        U R                  UR	                  5       [        S5      5        g )Nz zz1 )r   rA  r   r"   r#   r%   s     r   r   DerSetOfTests.testEncode4  sF    j*.!"q)D'EFr   c                 $   [        5       nUR                  [        S5      5        U R                  [	        U5      S5        UR                  [        S5      5        U R                  [	        U5      S5        U R                  [        U5      S/5        g )Nr?  r   r@  r5   )r   rH   r   r"   r   listr%   s     r   r   DerSetOfTests.testDecode1  si    j

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

1()*S!$cA3'r   c                     [        5       nUR                  [        S5      5        U R                  [	        U5      S5        [        U5      nU R                  SU;   5        U R                  SU;   5        g )N   1 ÿr8   r}   r   )r   rH   r   r"   r   rJ  r   )r   r&   ls      r   r   DerSetOfTests.testDecode2  sX    j

1<=>S!$I
#	"r   c                 l    [        5       nU R                  [        UR                  [	        S5      5        g )Nr   r   r   r   rH   r   r%   s     r   r   DerSetOfTests.testDecode3  s)    j*cjj=>	@r   c                 l    [        5       nU R                  UUR                  [        S5      5      5        g )NrM  )r   r"   rH   r   r%   s     r   r   DerSetOfTests.testDecode4   s,    j

1DEF	Hr   c                 l    [        5       nU R                  [        UR                  [	        S5      5        g )Nu   1 ÿªrQ  r%   s     r   r   DerSetOfTests.testErrDecode1  s(    j*cjj9:	<r   rh   N)ri   rj   rk   rl   rt   rz   r   r   r   r   r   r   r   r   rm   rh   r   r   r;  r;    s:    K?SFG(#@H<r   r;  c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)DerBooleanTestsi  c                 Z    [        S5      nU R                  UR                  5       S5        g )NF    r   r"   r#   r%   s     r   rz   DerBooleanTests.testEncode1  s"    7r   c                 Z    [        S5      nU R                  UR                  5       S5        g )NT   r[  r%   s     r   r   DerBooleanTests.testEncode2  s"    7r   c                 X    [        SSS9nU R                  UR                  5       S5        g )NF   r6       r[  r%   s     r   r   DerBooleanTests.testEncode3  s$    .7r   c                 X    [        SSS9nU R                  UR                  5       S5        g )NFr=   r>       r[  r%   s     r   r   DerBooleanTests.testEncode4  s%    .'>?r   c                 r    [        5       nUR                  S5        U R                  UR                  S5        g )NrZ  Fr   rH   r"   r   r%   s     r   r   DerBooleanTests.testDecode1"  s)    l

?#E*r   c                 r    [        5       nUR                  S5        U R                  UR                  S5        g )Nr^  Tri  r%   s     r   r   DerBooleanTests.testDecode2'  s)    l

?#D)r   c                 p    [        SS9nUR                  S5        U R                  UR                  S5        g )Nra  rb  rc  Fri  r%   s     r   r   DerBooleanTests.testDecode3,  s,    $'

?#E*r   c                 p    [        SS9nUR                  S5        U R                  UR                  S5        g )Nr=   r>   rf  Fri  r%   s     r   r   DerBooleanTests.testDecode41  s-    $'

*+E*r   c                 Z    [        5       nU R                  [        UR                  S5        g )Ns    r   r   r   rH   r%   s     r   testErrorDecode1 DerBooleanTests.testErrorDecode16  s    l*cjj/Br   c                 Z    [        5       nU R                  [        UR                  S5        g )Ns    rr  r%   s     r   testErrorDecode2 DerBooleanTests.testErrorDecode2;  s     l*cjj2EFr   rh   N)ri   rj   rk   rl   rz   r   r   r   r   r   r   r   rs  rv  rm   rh   r   r   rX  rX    s7    888@
+
*
+
+
C
Gr   rX  c                    SSK Jn  / nX!" [        5      -  nX!" [        5      -  nX!" [        5      -  nX!" [
        5      -  nX!" [        5      -  nX!" [        5      -  nX!" [        5      -  nX!" [        5      -  nX!" [        5      -  nU$ )Nr   )list_test_cases)Crypto.SelfTest.st_commonry  r   ro   r   r  r  r  r,  r;  rX  )configry  	listTestss      r   	get_testsr}  A  s    9I00I11I!122I!455I..I!122I!233I//I11Ir   __main__c                  >    [         R                  " [        5       5      $ )N)unittest	TestSuiter}  rh   r   r   <lambda>r  P  s    H&&y{3r   suite)defaultTest)__doc__r  Crypto.Util.py3compatCrypto.Util.asn1r   r   r   r   r   r	   r
   r   r   TestCaser   ro   r   r  r  r  r,  r;  rX  r}  ri   r  mainrh   r   r   <module>r     s  D &  #6 6 6
vAX&& vAp_Ih'' _IDl_x(( l_^!I(++ !IF98$$ 9.2x(( .2b$9)) $9NO<H%% O<d/Gh'' /Gd   z3EMMg& r   