
    [AhI                     X   S SK r S SKJr   S SKrS SKrS SKJr	  S SK
JrJr  S SKrSSKJr  SSKJrJr  SSKJrJrJr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) " S S\R@                  5      r* " S S\R@                  5      r+ " S S\R@                  5      r,\	RZ                  S S!-  S"4S# j5       r.0 r/S$\R`                  ;   a  S \/S%'   \" S'0 \/D6\" \." 5       5      S& 5       5       r1g! \ a    S SKr GNf = f)(    N)hexlify)givensettings   )str_idx_as_int)NIST256pNIST224p)remove_integerUnexpectedDERread_lengthencode_bitstringremove_bitstringremove_object
encode_oidremove_constructedremove_implicitremove_octet_stringremove_sequenceencode_implicitc                   V    \ 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)TestRemoveInteger    c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns    assertRaisesr   r
   selfs    UC:\Users\julio\Documents\inmobiliaria_backend\env\Lib\site-packages\ecdsa/test_der.pytest_non_minimal_encoding+TestRemoveInteger.test_non_minimal_encoding#   s%    }-./ .--   +
9c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns   r   r   s    r   test_negative_with_high_bit_set1TestRemoveInteger.test_negative_with_high_bit_set'   s$    }-?+ .--r!   c                 f    [        S5      u  pU R                  US5        U R                  US5        g Ns           r
   assertEqualr   valrems      r   test_minimal_with_high_bit_set0TestRemoveInteger.test_minimal_with_high_bit_set+   s/    !"56d#c"r(   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns     r   r   s    r   %test_two_zero_bytes_with_high_bit_set7TestRemoveInteger.test_two_zero_bytes_with_high_bit_set1   s%    }-23 .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns    r   r   s    r   test_zero_length_integer*TestRemoveInteger.test_zero_length_integer5   s$    }-;' .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = fNr(   r   r   s    r   test_empty_string#TestRemoveInteger.test_empty_string9   s$    }-3 .--r!   c                 f    [        S5      u  pU R                  US5        U R                  US5        g )Ns    r   r(   r)   r+   s      r   test_encoding_of_zero'TestRemoveInteger.test_encoding_of_zero=   s.    !/2a c"r(   c                 f    [        S5      u  pU R                  US5        U R                  US5        g )Ns      r(   r)   r+   s      r   test_encoding_of_127&TestRemoveInteger.test_encoding_of_127C   s.    !/2c"c"r(   c                 f    [        S5      u  pU R                  US5        U R                  US5        g r&   r)   r+   s      r   test_encoding_of_128&TestRemoveInteger.test_encoding_of_128I   s/    !"56c"c"r(   c                     U R                  [        5       n[        S5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Ns    zwanted type 'integer'r   r   r
   assertInstr	exceptionr   es     r   test_wrong_tag TestRemoveInteger.test_wrong_tagO   sC    }-./ . 	-s1;;/?@ .-   A
Ac                     U R                  [        5       n[        S5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Ns    Length longerrE   rI   s     r   test_wrong_length#TestRemoveInteger.test_wrong_lengthU   sB    }-./ . 	os1;;'78 .-rM    N)__name__
__module____qualname____firstlineno__r   r#   r.   r1   r4   r8   r;   r?   rB   rK   rP   __static_attributes__rR   r(   r   r   r       s:    0,#4( ###A9r(   r   c                   J    \ 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)TestReadLength\   c                 :    U R                  S[        S5      5        g )N)r   r       r*   r   r   s    r   test_zero_lengthTestReadLength.test_zero_length`   s    W!56r(   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns    r   r   r   r   s    r   test_two_byte_zero_length(TestReadLength.test_two_byte_zero_lengthc   $    }-$ .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns   ra   r   s    r   test_two_byte_small_length)TestReadLength.test_two_byte_small_lengthg   rd   r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)N   ra   r   s    r   test_long_form_with_zero_length.TestReadLength.test_long_form_with_zero_lengthk   s$    }-  .--r!   c                 :    U R                  S[        S5      5        g )N)r'      s   r]   r   s    r   test_smallest_two_byte_length,TestReadLength.test_smallest_two_byte_lengtho   s    ;{#;<r(   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns    ra   r   s    r   test_zero_padded_length&TestReadLength.test_zero_padded_lengthr   $    }-( .--r!   c                 :    U R                  S[        S5      5        g )N)      s    r]   r   s    r   test_two_three_byte_length)TestReadLength.test_two_three_byte_lengthv   s    ;#?@r(   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = fr7   ra   r   s    r   r8    TestReadLength.test_empty_stringy   s$    }- .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns    ra   r   s    r   test_length_overflow#TestReadLength.test_length_overflow}   rs   r!   rR   N)rS   rT   rU   rV   r^   rb   rf   rj   rn   rq   rw   r8   r|   rW   rR   r(   r   rY   rY   \   s0    7%%!=)A)r(   rY   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestEncodeBitstring   c                 `   [         R                  " S5        [        R                  " [        5       n[        S5      nSSS5        U R                  [        W5      S5        U R                  SUS   R                  R                  S   5        U R                  WS5        g! , (       d  f       Nh= f)z(This is the old way to use the function.always    Nr   zunused= needs to be specifiedr       )warningssimplefilterpytestwarnsDeprecationWarningr   r*   lenrF   messageargs)r   r   ders      r   test_old_call_convention,TestEncodeBitstring.test_old_call_convention   s    h'\\,-";/C . 	UQ'+U1X-=-=-B-B1-E	
 	12 .-s   B
B-c                     [         R                  " 5          [         R                  " S5        [        SS5      nSSS5        U R	                  WS5        g! , (       d  f       N!= f)z$This is how it should be called now.error   r   Nr   r   catch_warningsr   r   r*   r   r   s     r   test_new_call_convention,TestEncodeBitstring.test_new_call_convention   sK     $$&!!'*"7A.C ' 	12	 '&   #A
A"c                     [         R                  " 5          [         R                  " S5        [        SS5      nSSS5        U R	                  WS5        g! , (       d  f       N!= f)zE
Writing bit string with already included the number of unused bits.
r   r   Nr   r   r   s     r   test_implicit_unused_bits-TestEncodeBitstring.test_implicit_unused_bits   sK    
 $$&!!'*";5C ' 	12	 '&r   c                 @    [        SS5      nU R                  US5        g )Ns      s   )r   r*   r   s     r   test_explicit_unused_bits-TestEncodeBitstring.test_explicit_unused_bits   s    {A.56r(   c                 <    U R                  [        SS5      S5        g )Nr(   r   s    )r*   r   r   s    r   r8   %TestEncodeBitstring.test_empty_string   s    )#q1?Cr(   c                 z    U R                  [        5         [        SS5        S S S 5        g ! , (       d  f       g = f)Ns       r   
ValueErrorr   r   s    r   test_invalid_unused_count-TestEncodeBitstring.test_invalid_unused_count   s&    z*[!, +**   ,
:c                 z    U R                  [        5         [        SS5        S S S 5        g ! , (       d  f       g = f)Nr(   r   r   r   s    r   %test_invalid_unused_with_empty_string9TestEncodeBitstring.test_invalid_unused_with_empty_string   s&    z*S!$ +**r   c                 z    U R                  [        5         [        SS5        S S S 5        g ! , (       d  f       g = f)Nr   rm   r   r   s    r   test_non_zero_padding_bits.TestEncodeBitstring.test_non_zero_padding_bits   s&    z*Wa( +**r   rR   N)rS   rT   rU   rV   r   r   r   r   r8   r   r   r   rW   rR   r(   r   r   r      s+    33	37
D-%)r(   r   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g)TestRemoveBitstring   c                    [         R                  " S5        [        R                  " [        5       n[        S5      u  p#SSS5        U R                  [        W5      S5        U R                  SUS   R                  R                  S   5        U R                  WS5        U R                  WS5        g! , (       d  f       Nz= f)	z)This is the old way to call the function.r   r   Nr   z$expect_unused= needs to be specifiedr   r   r(   )r   r   r   r   r   r   r*   r   rF   r   r   )r   r   bitsrests       r   r   ,TestRemoveBitstring.test_old_call_convention   s    h'\\,-)*=>JD . 	UQ'2E!H4D4D4I4I!4L	
 	{+s# .-s   B33
Cc                     [         R                  " 5          [         R                  " S5        [        SS5      u  pS S S 5        U R	                  WS5        U R	                  WS5        g ! , (       d  f       N3= f)Nr   r   r   r   r(   r   r   r   r   r*   r   r   r   s      r   r   ,TestRemoveBitstring.test_new_call_convention   s[    $$&!!'*)*=qAJD ' 	w's# '&   %A((
A6c                     [         R                  " 5          [         R                  " S5        [        SS 5      u  pS S S 5        U R	                  WS5        U R	                  WS5        g ! , (       d  f       N3= f)Nr   r   )r   r   r(   r   r   s      r   test_implicit_unexpected_unused3TestRemoveBitstring.test_implicit_unexpected_unused   s[    $$&!!'*)*=tDJD ' 	|,s# '&r   c                 h    [        SS 5      u  pU R                  US5        U R                  US5        g )Ns   )   r   r(   )r   r*   )r   retr   s      r   test_with_padding%TestRemoveBitstring.test_with_padding   s1    $%8$?	l+s#r(   c                 z    U R                  [        5         [        SS 5        S S S 5        g ! , (       d  f       g = f)Ns    r   r   r   r   s    r   test_not_a_bitstring(TestRemoveBitstring.test_not_a_bitstring   '    }-0$7 .--r   c                 z    U R                  [        5         [        SS 5        S S S 5        g ! , (       d  f       g = f)Ns    r   r   s    r   test_empty_encoding'TestRemoveBitstring.test_empty_encoding   s&    }-[$/ .--r   c                 z    U R                  [        5         [        SS 5        S S S 5        g ! , (       d  f       g = fr7   r   r   s    r   r8   %TestRemoveBitstring.test_empty_string   s&    }-S$' .--r   c                 z    U R                  [        5         [        SS 5        S S S 5        g ! , (       d  f       g = f)N   r   r   s    r   test_no_length"TestRemoveBitstring.test_no_length   s&    }-Wd+ .--r   c                 z    U R                  [        5         [        SS5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   s    r   %test_unexpected_number_of_unused_bits9TestRemoveBitstring.test_unexpected_number_of_unused_bits   s'    }-0!4 .--r   c                 z    U R                  [        5         [        SS 5        S S S 5        g ! , (       d  f       g = f)Ns    r   r   s    r   $test_invalid_encoding_of_unused_bits8TestRemoveBitstring.test_invalid_encoding_of_unused_bits   s'    }-4d; .--r   c                 z    U R                  [        5         [        SS 5        S S S 5        g ! , (       d  f       g = f)Ns   r   r   s    r   %test_invalid_encoding_of_empty_string9TestRemoveBitstring.test_invalid_encoding_of_empty_string   s&    }-_d3 .--r   c                 z    U R                  [        5         [        SS 5        S S S 5        g ! , (       d  f       g = f)Ns   r   r   s    r   test_invalid_padding_bits-TestRemoveBitstring.test_invalid_padding_bits   r   r   rR   N)rS   rT   rU   rV   r   r   r   r   r   r   r8   r   r   r   r   r   rW   rR   r(   r   r   r      s>    $$$$80(,5<48r(   r   c                   &    \ rS rSrS rS rS rSrg)TestStrIdxAsInti  c                 <    U R                  S[        SS5      5        g )Ns   rG   r   r*   r   r   s    r   test_strTestStrIdxAsInt.test_str  s    nUA67r(   c                 <    U R                  S[        SS5      5        g Nr   s   strr   r   r   s    r   
test_bytesTestStrIdxAsInt.test_bytes  s    nVQ78r(   c                 N    U R                  S[        [        S5      S5      5        g r   )r*   r   	bytearrayr   s    r   test_bytearrayTestStrIdxAsInt.test_bytearray  s    nYv->BCr(   rR   N)rS   rT   rU   rV   r   r   r   rW   rR   r(   r   r   r     s    89D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)TestEncodeOidi  c                 Z    [        SSSSSS5      nU R                  [        U5      S5        g )Nr   rm   H  ='  s   06072a8648ce3d0201)r   r*   r   )r   oid_ecPublicKeys     r   test_pub_key_oidTestEncodeOid.test_pub_key_oid  s,    $Q3q!<13HIr(   c                 V    U R                  [        [        R                  5      S5        g )Ns   06052b81040021)r*   r   r	   encoded_oidr   s    r   test_nist224p_oidTestEncodeOid.test_nist224p_oid  s    !5!568IJr(   c                 V    U R                  [        [        R                  5      S5        g )Ns   06082a8648ce3d030107)r*   r   r   r   r   s    r   test_nist256p_oidTestEncodeOid.test_nist256p_oid  s!    H(()+B	
r(   c                 B    [        SSS5      nU R                  US5        g )Nrm     rv      7r   r*   r   oids     r   test_large_second_subid%TestEncodeOid.test_large_second_subid  s!    C#56r(   c                 @    [        SS5      nU R                  US5        g )Nrm   r      7r   r   s     r   test_with_two_subids"TestEncodeOid.test_with_two_subids!  s    C 12r(   c                 @    [        SS5      nU R                  US5        g )Nr       r   r   s     r   test_zero_zeroTestEncodeOid.test_zero_zero%  s    Ao.r(   c                     U R                  [        [        45         [        SS 5        S S S 5        g ! , (       d  f       g = f)Nr   )r   	TypeErrorAssertionErrorr   r   s    r   test_with_wrong_types#TestEncodeOid.test_with_wrong_types)  s+    	>:;q$ <;;s	   2
A c                 z    U R                  [        5         [        SS5        S S S 5        g ! , (       d  f       g = f)Nr   (   r   r  r   r   s    r   "test_with_small_first_large_second0TestEncodeOid.test_with_small_first_large_second-  &    ~.q" /..r   c                 @    [        SS5      nU R                  US5        g )Nr   '   s   Or   r   s     r   test_small_first_max_second)TestEncodeOid.test_small_first_max_second1  s    Bo.r(   c                 z    U R                  [        5         [        SS5        S S S 5        g ! , (       d  f       g = f)Nrv   r  r  r   s    r   test_with_invalid_first%TestEncodeOid.test_with_invalid_first5  r  r   rR   N)rS   rT   rU   rV   r   r   r   r  r  r	  r  r  r  r  rW   rR   r(   r   r   r     s6    JK

7
3/ /r(   r   c                   x    \ rS rSr\S 5       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)TestRemoveObjecti:  c                 .    [        SSSSSS5      U l        g )Nr   rm   r   r   )r   r   clss    r   
setUpClassTestRemoveObject.setUpClass;  s    (AsE1a@r(   c                 z    [        U R                  5      u  pU R                  US5        U R                  US5        g )Nr(   r   rm   r   r   rm   r   r   r   r*   r   r   r   s      r   r   !TestRemoveObject.test_pub_key_oid?  s5    !$"6"67	s#67r(   c                     [        U R                  S-   5      u  pU R                  US5        U R                  US5        g )Ns   morer%  r&  r'  s      r   test_with_extra_bytes&TestRemoveObject.test_with_extra_bytesD  s:    !$"6"6"@A	w'67r(   c                 f    [        S5      u  pU R                  US5        U R                  US5        g )Nr   r(   )rm   r   rv   r   r*   r'  s      r   test_with_large_second_subid-TestRemoveObject.test_with_large_second_subidI  s/    !"9:	s#k*r(   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns    r   r   r   r   s    r   test_with_padded_first_subid-TestRemoveObject.test_with_padded_first_subidO  %    }--. .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns   7r1  r   s    r   test_with_padded_second_subid.TestRemoveObject.test_with_padded_second_subidS  s%    }-56 .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns   7r1  r   s    r   )test_with_missing_last_byte_of_multi_byte:TestRemoveObject.test_with_missing_last_byte_of_multi_byteW  s%    }-12 .--r!   c                 f    [        S5      u  pU R                  US5        U R                  US5        g )Nr  r(   )rm   r   r-  r'  s      r   r  %TestRemoveObject.test_with_two_subids[  s/    !"56	s#h'r(   c                 f    [        S5      u  pU R                  US5        U R                  US5        g )Nr  r(   )r   r   r-  r'  s      r   r	  TestRemoveObject.test_zero_zero`  s.    !/2	s#f%r(   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = fr7   r1  r   s    r   r8   "TestRemoveObject.test_empty_stringe  s$    }-# .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)N   r1  r   s    r   test_missing_length$TestRemoveObject.test_missing_lengthi  s$    }-'" .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns    r1  r   s    r   test_empty_oidTestRemoveObject.test_empty_oidm  $    }-+& .--r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns   r1  r   s    r   test_empty_oid_overflow(TestRemoveObject.test_empty_oid_overflowq  rH  r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns   7r1  r   s    r   test_with_wrong_type%TestRemoveObject.test_with_wrong_typeu  r4  r!   c                 x    U R                  [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Ns   7r1  r   s    r   test_with_too_long_length*TestRemoveObject.test_with_too_long_lengthy  r4  r!   rR   N)rS   rT   rU   rV   classmethodr"  r   r*  r.  r2  r6  r9  r  r	  r8   rC  rF  rJ  rM  rP  rW   rR   r(   r   r  r  :  s\    A A8
8
+/73(
&
#''//r(   r  c                        \ rS rSrS rS rSrg)TestRemoveConstructedi~  c                     Sn[        U5      u  p#nU R                  US5        U R                  US5        U R                  US5        g )Ns   r      r(   )r   r*   r   datatagbodyr   s        r   test_simple!TestRemoveConstructed.test_simple  sE    ",T24d#{+s#r(   c                     SnU R                  [        5       n[        U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Ns   zconstructed tag)r   r   r   rF   rG   rH   r   rX  rJ   s      r   test_with_malformed_tag-TestRemoveConstructed.test_with_malformed_tag  sG    "}-t$ . 	'Q[[)9: .-   A
A rR   NrS   rT   rU   rV   r[  r_  rW   rR   r(   r   rT  rT  ~  s    $;r(   rT  c                   T    \ rS rSr\S 5       rS rS rS rS r	S r
S rS	 rS
 rSrg)TestRemoveImpliciti  c                 J    SU l         SU l        SU l        SU l        SU l        g )N      
   F
   
   
)exp_tagexp_datadata_applicationdata_context_specificdata_privater   s    r   r"  TestRemoveImplicit.setUpClass  s(    "2$7!.r(   c                     [        U R                  5      u  pnU R                  XR                  5        U R                  X R                  5        U R                  US5        g r7   r   rn  r*   rk  rl  r   rY  rZ  r   s       r   r[  TestRemoveImplicit.test_simple  sJ    )$*D*DE4ll+}}-s#r(   c                     U R                  [        5       n[        U R                  S5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nfoobarzinvalid `exp_class` value)r   r   r   rn  rF   rG   rH   rI   s     r   test_wrong_expected_class,TestRemoveImplicit.test_wrong_expected_class  sJ    z*aD66A + 	13q{{3CD +*   A
A)c                     U R                  [        5       n[        U R                  5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nz+wanted class context-specific, got 0x46 tag)r   r   r   rm  rF   rG   rH   rI   s     r   test_with_wrong_class(TestRemoveImplicit.test_with_wrong_class  sJ    }-D112 . 	93q{{;K	
 .-s   A
A(c                     [        U R                  S5      u  pnU R                  XR                  5        U R                  X R                  5        U R                  US5        g )Napplicationr(   )r   rm  r*   rk  rl  rs  s       r   test_with_application_class.TestRemoveImplicit.test_with_application_class  sL    )$*?*?O4ll+}}-s#r(   c                     [        U R                  S5      u  pnU R                  XR                  5        U R                  X R                  5        U R                  US5        g )Nprivater(   )r   ro  r*   rk  rl  rs  s       r   test_with_private_class*TestRemoveImplicit.test_with_private_class  sL    )$*;*;YG4ll+}}-s#r(   c                     Sn[        U R                  U-   5      u  p#nU R                  X R                  5        U R                  X0R                  5        U R                  XA5        g )Ns    rr  )r   
extra_datarY  rZ  r   s        r   test_with_data_following+TestRemoveImplicit.test_with_data_following  sW     
)&&3
4 	ll+}}-*r(   c                     SnU R                  [        5       n[        U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Ns   
z#wanted type primitive, got 0xa6 tag)r   r   r   rF   rG   rH   r^  s      r   test_with_constructed(TestRemoveImplicit.test_with_constructed  sG    "}-D! . 	;S=MN .-ra  c                     Sn[        [        SUS5      S5      u  p#nU R                  US5        U R                  X15        U R                  US5        g )Ns   some longish stringrf  r~  r(   )r   r   r*   rW  s        r   test_encode_decode%TestRemoveImplicit.test_encode_decode  sS    %)At]3]
4 	a $s#r(   rR   N)rS   rT   rU   rV   rR  r"  r[  rw  r{  r  r  r  r  r  rW   rR   r(   r   rd  rd    s>    / /$E
$$	+O	$r(   rd  c                   H    \ rS rSr\S 5       rS rS rS rS r	S r
S rS	rg
)TestEncodeImpliciti  c                 <    SU l         SU l        SU l        SU l        g )Nrg  rh  ri  rj  )rX  rm  rn  ro  r   s    r   r"  TestEncodeImplicit.setUpClass  s!    2$7!.r(   c                 f    [        SU R                  5      nU R                  XR                  5        g )Nrf  r   rX  r*   rn  r   r   s     r   test_encode_with_default_class1TestEncodeImplicit.test_encode_with_default_class  s&    a+889r(   c                 h    [        SU R                  S5      nU R                  XR                  5        g )Nrf  r~  )r   rX  r*   rm  r  s     r   "test_encode_with_application_class5TestEncodeImplicit.test_encode_with_application_class  s(    aM:334r(   c                 h    [        SU R                  S5      nU R                  XR                  5        g )Nrf  zcontext-specificr  r  s     r   'test_encode_with_context_specific_class:TestEncodeImplicit.test_encode_with_context_specific_class  s)    a,>?889r(   c                 h    [        SU R                  S5      nU R                  XR                  5        g )Nrf  r  )r   rX  r*   ro  r  s     r   test_encode_with_private_class1TestEncodeImplicit.test_encode_with_private_class  s(    aI6//0r(   c                     U R                  [        5       n[        SU R                  S5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nrf  rv  zinvalid tag classr   r   r   rX  rF   rG   rH   rI   s     r   test_encode_with_invalid_class1TestEncodeImplicit.test_encode_with_invalid_class  sJ    z*aAtyy(3 + 	)3q{{+;< +*s   A
A*c                     U R                  [        5       n[        SU R                  5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr   zLong tags not supportedr  rI   s     r   test_encode_with_too_large_tag1TestEncodeImplicit.test_encode_with_too_large_tag  sH    z*aB		* + 	/Q[[1AB +*ry  rR   N)rS   rT   rU   rV   rR  r"  r  r  r  r  r  r  rW   rR   r(   r   r  r    s3    / /:
5
:
1
=Cr(   r  c                        \ rS rSrS rS rSrg)TestRemoveOctetStringi  c                 j    Sn[        U5      u  p#U R                  US5        U R                  US5        g )Ns   s   r(   )r   r*   r   rX  rZ  r   s       r   r[  !TestRemoveOctetString.test_simple  s3    &(.
/s#r(   c                     SnU R                  [        5       n[        U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Ns   octetstring)r   r   r   rF   rG   rH   r^  s      r   r_  -TestRemoveOctetString.test_with_malformed_tag  sF    &}-% . 	mS%56 .-ra  rR   Nrb  rR   r(   r   r  r    s    $7r(   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestRemoveSequencei  c                 j    Sn[        U5      u  p#U R                  US5        U R                  US5        g )Ns   0rV  r(   )r   r*   r  s       r   r[  TestRemoveSequence.test_simple  s3    "$T*
{+s#r(   c                     U R                  [        5       n[        S5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr(   zEmpty stringr   r   r   rF   rG   rH   rI   s     r   test_with_empty_string)TestRemoveSequence.test_with_empty_string!  sA    }-C  . 	nc!++&67 .-rM   c                     SnU R                  [        5       n[        U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Ns    zwanted type 'sequence'r  r^  s      r   test_with_wrong_tag&TestRemoveSequence.test_with_wrong_tag'  sG    "}-D! . 	.AKK0@A .-ra  c                     SnU R                  [        5       n[        U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Ns   0rO   r  r^  s      r   test_with_wrong_length)TestRemoveSequence.test_with_wrong_length/  sF    "}-D! . 	os1;;'78 .-ra  rR   N)	rS   rT   rU   rV   r[  r  r  r  rW   rR   r(   r   r  r    s    $8B9r(   r  rm   i   2   c           	      ,   U " [         R                  " SSS95      nUS:  a  U " [         R                  " SSS95      nOU " [         R                  " SUS95      nU " [         R                  " [         R                  " SUS9US95      nX44[        U5      -   $ )z
Hypothesis strategy that returns valid OBJECT IDENTIFIERs as tuples

:param max_value: maximum value of any single sub-identifier
:param max_size: maximum length of the generated OID
r   rm   )	min_value	max_valuer  )max_size)stintegersliststuple)drawr  r  firstsecondr   s         r   st_oidr  8  s     qA67EqybkkA<=bkkACD
KK!y9H	
D
 ?U4[((r(   z--fastmax_examplesc                 L    [        U 6 n[        U5      u  p#US:X  d   eX :X  d   eg r7   )r   r   )idsr   decoded_oidr   s       r   	test_oidsr  T  s3     c"K%k2K3;;r(   rR   )2r   binasciir   	unittest2unittestImportErrorsyshypothesis.strategies
strategiesr  
hypothesisr   r   r   _compatr   curvesr   r	   r   r
   r   r   r   r   r   r   r   r   r   r   r   TestCaser   rY   r   r   r   r   r  rT  rd  r  r  r  	compositer  HYP_SETTINGSargvr  rR   r(   r   <module>r     s       " &  # &    99)) 99x#)X&& #)L7)(++ 7)tE8(++ E8PDh'' D(H%% (VA/x(( A/H;H-- ;&K$** K$\)C** )CX7H-- 79** 9< c6B ) )(  sxx#$L  
Lvx  ]  s   F 
F)(F)