Ë
    E·j‰M  ã                   ób  — d dl Z d dlmZ 	 d dlZd dlZd dlmZ	 d dl
mZmZ d dlZddlmZ ddlmZmZ ddlmZmZmZ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) G d„ dej@                  «      Z* G d„ dej@                  «      Z+ G d„ dej@                  «      Z,e	jZ                  d d!z  d"fd#„«       Z.i Z/d$ej`                  v rd e/d%<    ed*i e/¤Ž e e.«       «      d&„ «       «       Z1d'„ Z2d(„ Z3d)„ Z4y# e$ r d dlZY �Œ�w xY w)+é    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                   óN   — 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y)ÚTestRemoveIntegerc                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns    ©ÚassertRaisesr   r
   ©Úselfs    ú\/var/www/html/ai-video-generator/backend/venv/lib/python3.12/site-packages/ecdsa/test_der.pyÚtest_non_minimal_encodingz+TestRemoveInteger.test_non_minimal_encoding#   s.   € Ø×Ñœ}Ó-ñ 	0ÜÐ.Ô/÷	0÷ 	0ñ 	0úó   –+«4c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   €r   r   s    r   Útest_negative_with_high_bit_setz1TestRemoveInteger.test_negative_with_high_bit_set'   s-   € Ø×Ñœ}Ó-ñ 	,Ü˜?Ô+÷	,÷ 	,ñ 	,úr   c                 óh   — t        d«      \  }}| j                  |d«       | j                  |d«       y ©Ns    €é€   ó    ©r
   ÚassertEqual©r   ÚvalÚrems      r   Útest_minimal_with_high_bit_setz0TestRemoveInteger.test_minimal_with_high_bit_set+   s1   € Ü!Ð"5Ó6‰ˆˆSà×Ñ˜˜dÔ#Ø×Ñ˜˜cÕ"r%   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns     ÿr   r   s    r   Ú%test_two_zero_bytes_with_high_bit_setz7TestRemoveInteger.test_two_zero_bytes_with_high_bit_set1   s.   € Ø×Ñœ}Ó-ñ 	4ÜÐ2Ô3÷	4÷ 	4ñ 	4úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns    r   r   s    r   Útest_zero_length_integerz*TestRemoveInteger.test_zero_length_integer5   s-   € Ø×Ñœ}Ó-ñ 	(Ü˜;Ô'÷	(÷ 	(ñ 	(úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w©Nr%   r   r   s    r   Útest_empty_stringz#TestRemoveInteger.test_empty_string9   s-   € Ø×Ñœ}Ó-ñ 	 Ü˜3Ô÷	 ÷ 	 ñ 	 úr   c                 óh   — t        d«      \  }}| j                  |d«       | j                  |d«       y )Ns    r   r%   r&   r(   s      r   Útest_encoding_of_zeroz'TestRemoveInteger.test_encoding_of_zero=   s0   € Ü! /Ó2‰ˆˆSà×Ñ˜˜aÔ Ø×Ñ˜˜cÕ"r%   c                 óh   — t        d«      \  }}| j                  |d«       | j                  |d«       y )Ns   é   r%   r&   r(   s      r   Útest_encoding_of_127z&TestRemoveInteger.test_encoding_of_127C   s0   € Ü! /Ó2‰ˆˆSà×Ñ˜˜cÔ"Ø×Ñ˜˜cÕ"r%   c                 óh   — t        d«      \  }}| j                  |d«       | j                  |d«       y r#   r&   r(   s      r   Útest_encoding_of_128z&TestRemoveInteger.test_encoding_of_128I   s1   € Ü!Ð"5Ó6‰ˆˆSà×Ñ˜˜cÔ"Ø×Ñ˜˜cÕ"r%   c                 ó¸   — | j                  t        «      5 }t        d«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Ns    €zwanted type 'integer'©r   r   r
   ÚassertInÚstrÚ	exception©r   Úes     r   Útest_wrong_tagz TestRemoveInteger.test_wrong_tagO   sJ   € Ø×Ñœ}Ó-ð 	0°ÜÐ.Ô/÷	0ð 	�‰Ð-¬s°1·;±;Ó/?Õ@÷	0ð 	0úó   –AÁAc                 ó¸   — | j                  t        «      5 }t        d«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Ns    €úLength longerr;   r?   s     r   Útest_wrong_lengthz#TestRemoveInteger.test_wrong_lengthU   sI   € Ø×Ñœ}Ó-ð 	0°ÜÐ.Ô/÷	0ð 	�‰�o¤s¨1¯;©;Ó'7Õ8÷	0ð 	0úrB   N)Ú__name__Ú
__module__Ú__qualname__r   r!   r+   r-   r/   r2   r4   r7   r9   rA   rE   © r%   r   r   r       s:   „ ò0ò,ò#ò4ò(ò ò#ò#ò#òAó9r%   r   c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚTestReadLengthc                 ó:   — | j                  dt        d«      «       y )N)r   r   ó    ©r'   r   r   s    r   Útest_zero_lengthzTestReadLength.test_zero_length`   s   € Ø×Ñ˜¤¨WÓ!5Õ6r%   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   � ©r   r   r   r   s    r   Útest_two_byte_zero_lengthz(TestReadLength.test_two_byte_zero_lengthc   ó-   € Ø×Ñœ}Ó-ñ 	%Ü˜Ô$÷	%÷ 	%ñ 	%úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   �rQ   r   s    r   Útest_two_byte_small_lengthz)TestReadLength.test_two_byte_small_lengthg   rS   r   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Nó   €rQ   r   s    r   Útest_long_form_with_zero_lengthz.TestReadLength.test_long_form_with_zero_lengthk   s-   € Ø×Ñœ}Ó-ñ 	!Ü˜Ô ÷	!÷ 	!ñ 	!úr   c                 ó:   — | j                  dt        d«      «       y )N)r$   é   s   �€rN   r   s    r   Útest_smallest_two_byte_lengthz,TestReadLength.test_smallest_two_byte_lengtho   s   € Ø×Ñ˜¤;¨{Ó#;Õ<r%   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   ‚ €rQ   r   s    r   Útest_zero_padded_lengthz&TestReadLength.test_zero_padded_lengthr   ó-   € Ø×Ñœ}Ó-ñ 	)Ü˜Ô(÷	)÷ 	)ñ 	)úr   c                 ó:   — | j                  dt        d«      «       y )N)é   é   s   ‚ rN   r   s    r   Útest_two_three_byte_lengthz)TestReadLength.test_two_three_byte_lengthv   s   € Ø×Ñ˜¤;¨Ó#?Õ@r%   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY wr1   rQ   r   s    r   r2   z TestReadLength.test_empty_stringy   s-   € Ø×Ñœ}Ó-ñ 	Ü˜Ô÷	÷ 	ñ 	úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   ƒ rQ   r   s    r   Útest_length_overflowz#TestReadLength.test_length_overflow}   r^   r   N)rF   rG   rH   rO   rR   rU   rX   r[   r]   rb   r2   re   rI   r%   r   rK   rK   \   s0   „ ò7ò%ò%ò!ò=ò)òAòó)r%   rK   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestEncodeBitstringc                 óR  — t        j                  d«       t        j                  t        «      5 }t        d«      }ddd«       | j                  t        «      d«       | j                  d|d   j                  j                  d   «       | j                  d«       y# 1 sw Y   ŒcxY w)z(This is the old way to use the function.Úalwaysó    ÿNr   zunused= needs to be specifiedr   ó    ÿ)ÚwarningsÚsimplefilterÚpytestÚwarnsÚDeprecationWarningr   r'   Úlenr<   ÚmessageÚargs)r   ro   Úders      r   Útest_old_call_conventionz,TestEncodeBitstring.test_old_call_convention†   s�   € ä×Ñ˜hÔ'Ü�\‰\Ô,Ó-ð 	0°Ü" ;Ó/ˆC÷	0ð 	×Ñœ˜U› QÔ'Ø�‰Ø+¨U°1©X×-=Ñ-=×-BÑ-BÀ1Ñ-Eô	
ð 	×Ñ˜Ð1Õ2÷	0ð 	0ús   ¯BÂB&c                 ó¼   — t        j                  «       5  t        j                  d«       t        dd«      }ddd«       | j	                  d«       y# 1 sw Y   ŒxY w)z$This is how it should be called now.Úerroró   ÿr   Nrk   ©rl   Úcatch_warningsrm   r   r'   ©r   rt   s     r   Útest_new_call_conventionz,TestEncodeBitstring.test_new_call_convention“   sR   € ô ×$Ñ$Ó&ñ 	/Ü×!Ñ! 'Ô*Ü" 7¨AÓ.ˆC÷	/ð 	×Ñ˜Ð1Õ2÷		/ð 	/úó   •"AÁAc                 ó¼   — t        j                  «       5  t        j                  d«       t        dd«      }ddd«       | j	                  d«       y# 1 sw Y   ŒxY w)zU
        Writing bit string with already included the number of unused bits.
        rw   rj   Nrk   ry   r{   s     r   Útest_implicit_unused_bitsz-TestEncodeBitstring.test_implicit_unused_bitsœ   sR   € ô
 ×$Ñ$Ó&ñ 	6Ü×!Ñ! 'Ô*Ü" ;°Ó5ˆC÷	6ð 	×Ñ˜Ð1Õ2÷		6ð 	6úr}   c                 ó@   — t        dd«      }| j                  |d«       y )Ns   ÿðé   s   ÿð)r   r'   r{   s     r   Útest_explicit_unused_bitsz-TestEncodeBitstring.test_explicit_unused_bits§   s   € Ü˜{¨AÓ.ˆà×Ñ˜Ð5Õ6r%   c                 ó<   — | j                  t        dd«      d«       y )Nr%   r   s    )r'   r   r   s    r   r2   z%TestEncodeBitstring.test_empty_string¬   s   € Ø×ÑÔ)¨#¨qÓ1°?ÕCr%   c                 óp   — | j                  t        «      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Ns   ÿ é   ©r   Ú
ValueErrorr   r   s    r   Útest_invalid_unused_countz-TestEncodeBitstring.test_invalid_unused_count¯   s/   € Ø×ÑœzÓ*ñ 	-Ü˜[¨!Ô,÷	-÷ 	-ñ 	-úó   –,¬5c                 óp   — | j                  t        «      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Nr%   r   r†   r   s    r   Ú%test_invalid_unused_with_empty_stringz9TestEncodeBitstring.test_invalid_unused_with_empty_string³   s/   € Ø×ÑœzÓ*ñ 	%Ü˜S !Ô$÷	%÷ 	%ñ 	%úr‰   c                 óp   — | j                  t        «      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Nrx   rZ   r†   r   s    r   Útest_non_zero_padding_bitsz.TestEncodeBitstring.test_non_zero_padding_bits·   s/   € Ø×ÑœzÓ*ñ 	)Ü˜W aÔ(÷	)÷ 	)ñ 	)úr‰   N)rF   rG   rH   ru   r|   r   r‚   r2   rˆ   r‹   r�   rI   r%   r   rg   rg   ‚   s+   „ ò3ò3ò	3ò7ò
Dò-ò%ó)r%   rg   c                   óT   — 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y)ÚTestRemoveBitstringc                 ó|  — t        j                  d«       t        j                  t        «      5 }t        d«      \  }}ddd«       | j                  t        «      d«       | j                  d|d   j                  j                  d   «       | j                  d«       | j                  d«       y# 1 sw Y   ŒuxY w)	z)This is the old way to call the function.ri   rk   Nr   z$expect_unused= needs to be specifiedr   rj   r%   )rl   rm   rn   ro   rp   r   r'   rq   r<   rr   rs   )r   ro   ÚbitsÚrests       r   ru   z,TestRemoveBitstring.test_old_call_convention½   s¡   € ä×Ñ˜hÔ'Ü�\‰\Ô,Ó-ð 	?°Ü)Ð*=Ó>‰JˆD�$÷	?ð 	×Ñœ˜U› QÔ'Ø�‰Ø2°E¸!±H×4DÑ4D×4IÑ4IÈ!Ñ4Lô	
ð 	×Ñ˜˜{Ô+Ø×Ñ˜˜sÕ#÷	?ð 	?ús   ¯B2Â2B;c                 óæ   — t        j                  «       5  t        j                  d«       t        dd«      \  }}d d d «       | j	                  d«       | j	                  d«       y # 1 sw Y   Œ.xY w)Nrw   rk   r   rx   r%   ©rl   rz   rm   r   r'   ©r   r‘   r’   s      r   r|   z,TestRemoveBitstring.test_new_call_conventionË   sh   € ä×$Ñ$Ó&ñ 	BÜ×!Ñ! 'Ô*Ü)Ð*=¸qÓA‰JˆD�$÷	Bð 	×Ñ˜˜wÔ'Ø×Ñ˜˜sÕ#÷	Bð 	Búó   •%A'Á'A0c                 óæ   — t        j                  «       5  t        j                  d«       t        dd «      \  }}d d d «       | j	                  d«       | j	                  d«       y # 1 sw Y   Œ.xY w)Nrw   rk   )rx   r   r%   r”   r•   s      r   Útest_implicit_unexpected_unusedz3TestRemoveBitstring.test_implicit_unexpected_unusedÔ   sh   € ä×$Ñ$Ó&ñ 	EÜ×!Ñ! 'Ô*Ü)Ð*=¸tÓD‰JˆD�$÷	Eð 	×Ñ˜˜|Ô,Ø×Ñ˜˜sÕ#÷	Eð 	Eúr–   c                 ój   — t        dd «      \  }}| j                  |d«       | j                  |d«       y )Ns   ð)ó   ðr�   r%   )r   r'   )r   Úretr’   s      r   Útest_with_paddingz%TestRemoveBitstring.test_with_paddingÝ   s3   € Ü$Ð%8¸$Ó?‰	ˆˆTà×Ñ˜˜lÔ+Ø×Ñ˜˜sÕ#r%   c                 óp   — | j                  t        «      5  t        dd «       d d d «       y # 1 sw Y   y xY w)Ns    ÿ©r   r   r   r   s    r   Útest_not_a_bitstringz(TestRemoveBitstring.test_not_a_bitstringã   ó0   € Ø×Ñœ}Ó-ñ 	8ÜÐ0°$Ô7÷	8÷ 	8ñ 	8úr‰   c                 óp   — | j                  t        «      5  t        dd «       d d d «       y # 1 sw Y   y xY w)Ns    rž   r   s    r   Útest_empty_encodingz'TestRemoveBitstring.test_empty_encodingç   s/   € Ø×Ñœ}Ó-ñ 	0Ü˜[¨$Ô/÷	0÷ 	0ñ 	0úr‰   c                 óp   — | j                  t        «      5  t        dd «       d d d «       y # 1 sw Y   y xY wr1   rž   r   s    r   r2   z%TestRemoveBitstring.test_empty_stringë   s/   € Ø×Ñœ}Ó-ñ 	(Ü˜S $Ô'÷	(÷ 	(ñ 	(úr‰   c                 óp   — | j                  t        «      5  t        dd «       d d d «       y # 1 sw Y   y xY w)Nó   rž   r   s    r   Útest_no_lengthz"TestRemoveBitstring.test_no_lengthï   s/   € Ø×Ñœ}Ó-ñ 	,Ü˜W dÔ+÷	,÷ 	,ñ 	,úr‰   c                 óp   — | j                  t        «      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Nrk   r   rž   r   s    r   Ú%test_unexpected_number_of_unused_bitsz9TestRemoveBitstring.test_unexpected_number_of_unused_bitsó   s0   € Ø×Ñœ}Ó-ñ 	5ÜÐ0°!Ô4÷	5÷ 	5ñ 	5úr‰   c                 óp   — | j                  t        «      5  t        dd «       d d d «       y # 1 sw Y   y xY w)Ns   ÿ rž   r   s    r   Ú$test_invalid_encoding_of_unused_bitsz8TestRemoveBitstring.test_invalid_encoding_of_unused_bits÷   s0   € Ø×Ñœ}Ó-ñ 	<ÜÐ4°dÔ;÷	<÷ 	<ñ 	<úr‰   c                 óp   — | j                  t        «      5  t        dd «       d d d «       y # 1 sw Y   y xY w)Ns   rž   r   s    r   Ú%test_invalid_encoding_of_empty_stringz9TestRemoveBitstring.test_invalid_encoding_of_empty_stringû   s/   € Ø×Ñœ}Ó-ñ 	4Ü˜_¨dÔ3÷	4÷ 	4ñ 	4úr‰   c                 óp   — | j                  t        «      5  t        dd «       d d d «       y # 1 sw Y   y xY w)Ns   ÿrž   r   s    r   Útest_invalid_padding_bitsz-TestRemoveBitstring.test_invalid_padding_bitsÿ   r    r‰   N)rF   rG   rH   ru   r|   r˜   rœ   rŸ   r¢   r2   r¦   r¨   rª   r¬   r®   rI   r%   r   r�   r�   ¼   s>   „ ò$ò$ò$ò$ò8ò0ò(ò,ò5ò<ò4ó8r%   r�   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestStrIdxAsIntc                 ó<   — | j                  dt        dd«      «       y )Nés   r=   r   ©r'   r   r   s    r   Útest_strzTestStrIdxAsInt.test_str  s   € Ø×Ñ˜œn¨U°AÓ6Õ7r%   c                 ó<   — | j                  dt        dd«      «       y ©Nr²   s   strr   r³   r   s    r   Ú
test_byteszTestStrIdxAsInt.test_bytes  s   € Ø×Ñ˜œn¨V°QÓ7Õ8r%   c                 óN   — | j                  dt        t        d«      d«      «       y r¶   )r'   r   Ú	bytearrayr   s    r   Útest_bytearrayzTestStrIdxAsInt.test_bytearray  s   € Ø×Ñ˜œn¬Y°vÓ->ÀÓBÕCr%   N)rF   rG   rH   r´   r·   rº   rI   r%   r   r°   r°     s   „ ò8ò9óDr%   r°   c                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestEncodeOidc                 óZ   — t        dddddd«      }| j                  t        |«      d«       y )Nr   rZ   éH  é='  s   06072a8648ce3d0201)r   r'   r   )r   Úoid_ecPublicKeys     r   Útest_pub_key_oidzTestEncodeOid.test_pub_key_oid  s,   € Ü$ Q¨¨3°°q¸!Ó<ˆØ×Ñœ Ó1Ð3HÕIr%   c                 óV   — | j                  t        t        j                  «      d«       y )Ns   06052b81040021)r'   r   r	   Úencoded_oidr   s    r   Útest_nist224p_oidzTestEncodeOid.test_nist224p_oid  s   € Ø×Ñœ¤×!5Ñ!5Ó6Ð8IÕJr%   c                 óV   — | j                  t        t        j                  «      d«       y )Ns   06082a8648ce3d030107)r'   r   r   rÃ   r   s    r   Útest_nist256p_oidzTestEncodeOid.test_nist256p_oid  s!   € Ø×ÑÜ”H×(Ñ(Ó)Ð+Bõ	
r%   c                 óB   — t        ddd«      }| j                  |d«       y )NrZ   éç  ra   ó   ˆ7©r   r'   ©r   Úoids     r   Útest_large_second_subidz%TestEncodeOid.test_large_second_subid  s!   € ä˜˜C Ó#ˆØ×Ñ˜Ð5Õ6r%   c                 ó@   — t        dd«      }| j                  |d«       y )NrZ   rÈ   ó   ˆ7rÊ   rË   s     r   Útest_with_two_subidsz"TestEncodeOid.test_with_two_subids!  s   € Ü˜˜CÓ ˆØ×Ñ˜Ð1Õ2r%   c                 ó@   — t        dd«      }| j                  |d«       y )Nr   ó    rÊ   rË   s     r   Útest_zero_zerozTestEncodeOid.test_zero_zero%  s   € Ü˜˜AÓˆØ×Ñ˜˜oÕ.r%   c                 ó|   — | j                  t        t        f«      5  t        dd «       d d d «       y # 1 sw Y   y xY w)Nr   )r   Ú	TypeErrorÚAssertionErrorr   r   s    r   Útest_with_wrong_typesz#TestEncodeOid.test_with_wrong_types)  s4   € Ø×Ñ¤	¬>Ð:Ó;ñ 	 Ü�q˜$Ô÷	 ÷ 	 ñ 	 ús   œ2²;c                 óp   — | j                  t        «      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Nr   é(   ©r   rÖ   r   r   s    r   Ú"test_with_small_first_large_secondz0TestEncodeOid.test_with_small_first_large_second-  ó/   € Ø×Ñœ~Ó.ñ 	Ü�q˜"Ô÷	÷ 	ñ 	úr‰   c                 ó@   — t        dd«      }| j                  |d«       y )Nr   é'   s   OrÊ   rË   s     r   Útest_small_first_max_secondz)TestEncodeOid.test_small_first_max_second1  s   € Ü˜˜BÓˆØ×Ñ˜˜oÕ.r%   c                 óp   — | j                  t        «      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Nra   rÞ   rÚ   r   s    r   Útest_with_invalid_firstz%TestEncodeOid.test_with_invalid_first5  rÜ   r‰   N)rF   rG   rH   rÁ   rÄ   rÆ   rÍ   rÐ   rÓ   r×   rÛ   rß   rá   rI   r%   r   r¼   r¼     s6   „ òJòKò
ò
7ò
3ò/ò òò/ór%   r¼   c                   óp   — e Zd Ze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y)ÚTestRemoveObjectc                 ó.   — t        dddddd«      | _        y )Nr   rZ   r¾   r¿   )r   rÀ   ©Úclss    r   Ú
setUpClasszTestRemoveObject.setUpClass;  s   € ä(¨¨A¨s°E¸1¸aÓ@ˆÕr%   c                 ó|   — t        | j                  «      \  }}| j                  |d«       | j                  |d«       y )Nr%   ©r   rZ   r¾   r¿   rZ   r   ©r   rÀ   r'   ©r   rÌ   r’   s      r   rÁ   z!TestRemoveObject.test_pub_key_oid?  s7   € Ü! $×"6Ñ"6Ó7‰	ˆˆTØ×Ñ˜˜sÔ#Ø×Ñ˜Ð6Õ7r%   c                 ó‚   — t        | j                  dz   «      \  }}| j                  |d«       | j                  |d«       y )Ns   moreré   rê   rë   s      r   Útest_with_extra_bytesz&TestRemoveObject.test_with_extra_bytesD  s<   € Ü! $×"6Ñ"6¸Ñ"@ÓA‰	ˆˆTØ×Ñ˜˜wÔ'Ø×Ñ˜Ð6Õ7r%   c                 óh   — t        d«      \  }}| j                  |d«       | j                  |d«       y )NrÉ   r%   )rZ   rÈ   ra   ©r   r'   rë   s      r   Útest_with_large_second_subidz-TestRemoveObject.test_with_large_second_subidI  s1   € ä!Ð"9Ó:‰	ˆˆTØ×Ñ˜˜sÔ#Ø×Ñ˜˜kÕ*r%   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   € ©r   r   r   r   s    r   Útest_with_padded_first_subidz-TestRemoveObject.test_with_padded_first_subidO  ó.   € Ø×Ñœ}Ó-ñ 	/ÜÐ-Ô.÷	/÷ 	/ñ 	/úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   ˆ7€rò   r   s    r   Útest_with_padded_second_subidz.TestRemoveObject.test_with_padded_second_subidS  s.   € Ø×Ñœ}Ó-ñ 	7ÜÐ5Ô6÷	7÷ 	7ñ 	7úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   ˆ7ƒrò   r   s    r   Ú)test_with_missing_last_byte_of_multi_bytez:TestRemoveObject.test_with_missing_last_byte_of_multi_byteW  s.   € Ø×Ñœ}Ó-ñ 	3ÜÐ1Ô2÷	3÷ 	3ñ 	3úr   c                 óh   — t        d«      \  }}| j                  |d«       | j                  |d«       y )NrÏ   r%   )rZ   rÈ   rï   rë   s      r   rÐ   z%TestRemoveObject.test_with_two_subids[  s1   € Ü!Ð"5Ó6‰	ˆˆTØ×Ñ˜˜sÔ#Ø×Ñ˜˜hÕ'r%   c                 óh   — t        d«      \  }}| j                  |d«       | j                  |d«       y )NrÒ   r%   )r   r   rï   rë   s      r   rÓ   zTestRemoveObject.test_zero_zero`  s0   € Ü! /Ó2‰	ˆˆTØ×Ñ˜˜sÔ#Ø×Ñ˜˜fÕ%r%   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY wr1   rò   r   s    r   r2   z"TestRemoveObject.test_empty_stringe  s-   € Ø×Ñœ}Ó-ñ 	Ü˜#Ô÷	÷ 	ñ 	úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Nó   rò   r   s    r   Útest_missing_lengthz$TestRemoveObject.test_missing_lengthi  s-   € Ø×Ñœ}Ó-ñ 	#Ü˜'Ô"÷	#÷ 	#ñ 	#úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns    rò   r   s    r   Útest_empty_oidzTestRemoveObject.test_empty_oidm  ó-   € Ø×Ñœ}Ó-ñ 	'Ü˜+Ô&÷	'÷ 	'ñ 	'úr   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   rò   r   s    r   Útest_empty_oid_overflowz(TestRemoveObject.test_empty_oid_overflowq  r  r   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   ˆ7rò   r   s    r   Útest_with_wrong_typez%TestRemoveObject.test_with_wrong_typeu  rô   r   c                 ón   — | j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Ns   ˆ7rò   r   s    r   Útest_with_too_long_lengthz*TestRemoveObject.test_with_too_long_lengthy  rô   r   N)rF   rG   rH   Úclassmethodrç   rÁ   rí   rð   ró   rö   rø   rÐ   rÓ   r2   rþ   r   r  r  r  rI   r%   r   rã   rã   :  s\   „ ØñAó ðAò8ò
8ò
+ò/ò7ò3ò(ò
&ò
ò#ò'ò'ò/ó/r%   rã   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestRemoveConstructedc                 ó’   — d}t        |«      \  }}}| j                  |d«       | j                  |d«       | j                  |d«       y )Ns   ¡ÿªr   ó   ÿªr%   )r   r'   ©r   ÚdataÚtagÚbodyr’   s        r   Útest_simplez!TestRemoveConstructed.test_simple  sG   € Ø"ˆä,¨TÓ2‰ˆˆT�4à×Ñ˜˜dÔ#Ø×Ñ˜˜{Ô+Ø×Ñ˜˜sÕ#r%   c                 ó¼   — d}| j                  t        «      5 }t        |«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Ns   ÿªzconstructed tag)r   r   r   r<   r=   r>   ©r   r  r@   s      r   Útest_with_malformed_tagz-TestRemoveConstructed.test_with_malformed_tagˆ  sN   € Ø"ˆà×Ñœ}Ó-ð 	%°Ü˜tÔ$÷	%ð 	�‰Ð'¬¨Q¯[©[Ó)9Õ:÷	%ð 	%úó   ˜AÁAN©rF   rG   rH   r  r  rI   r%   r   r
  r
  ~  s   „ ò$ó;r%   r
  c                   óL   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚTestRemoveImplicitc                 óJ   — d| _         d| _        d| _        d| _        d| _        y )Né   ó   
ó   F
ó   †
ó   Æ
)Úexp_tagÚexp_dataÚdata_applicationÚdata_context_specificÚdata_privaterå   s    r   rç   zTestRemoveImplicit.setUpClass’  s(   € àˆŒØ"ˆŒà2ˆÔà$7ˆÔ!à.ˆÕr%   c                 óÊ   — t        | j                  «      \  }}}| j                  || j                  «       | j                  || j                  «       | j                  |d«       y r1   ©r   r"  r'   r  r   ©r   r  r  r’   s       r   r  zTestRemoveImplicit.test_simple�  sP   € Ü)¨$×*DÑ*DÓE‰ˆˆT�4à×Ñ˜˜dŸl™lÔ+Ø×Ñ˜˜tŸ}™}Ô-Ø×Ñ˜˜sÕ#r%   c                 óÎ   — | j                  t        «      5 }t        | j                  d«       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)NÚfoobarzinvalid `exp_class` value)r   r‡   r   r"  r<   r=   r>   r?   s     r   Útest_wrong_expected_classz,TestRemoveImplicit.test_wrong_expected_class¤  sU   € Ø×ÑœzÓ*ð 	B¨aÜ˜D×6Ñ6¸ÔA÷	Bð 	�‰Ð1´3°q·{±{Ó3CÕD÷	Bð 	Búó   –AÁA$c                 óÌ   — | j                  t        «      5 }t        | j                  «       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nz+wanted class context-specific, got 0x46 tag)r   r   r   r!  r<   r=   r>   r?   s     r   Útest_with_wrong_classz(TestRemoveImplicit.test_with_wrong_classª  sQ   € Ø×Ñœ}Ó-ð 	3°Ü˜D×1Ñ1Ô2÷	3ð 	�‰Ø9¼3¸q¿{¹{Ó;Kõ	
÷	3ð 	3ús   –AÁA#c                 óÌ   — t        | j                  d«      \  }}}| j                  || j                  «       | j                  || j                  «       | j                  |d«       y )NÚapplicationr%   )r   r!  r'   r  r   r&  s       r   Útest_with_application_classz.TestRemoveImplicit.test_with_application_class²  sR   € Ü)¨$×*?Ñ*?ÀÓO‰ˆˆT�4à×Ñ˜˜dŸl™lÔ+Ø×Ñ˜˜tŸ}™}Ô-Ø×Ñ˜˜sÕ#r%   c                 óÌ   — t        | j                  d«      \  }}}| j                  || j                  «       | j                  || j                  «       | j                  |d«       y )NÚprivater%   )r   r#  r'   r  r   r&  s       r   Útest_with_private_classz*TestRemoveImplicit.test_with_private_class¹  sR   € Ü)¨$×*;Ñ*;¸YÓG‰ˆˆT�4à×Ñ˜˜dŸl™lÔ+Ø×Ñ˜˜tŸ}™}Ô-Ø×Ñ˜˜sÕ#r%   c                 óÔ   — d}t        | j                  |z   «      \  }}}| j                  || j                  «       | j                  || j                  «       | j                  ||«       y )Ns    r%  )r   Ú
extra_datar  r  r’   s        r   Útest_with_data_followingz+TestRemoveImplicit.test_with_data_followingÀ  s_   € Ø ˆ
ä)Ø×&Ñ&¨Ñ3ó
‰ˆˆT�4ð 	×Ñ˜˜dŸl™lÔ+Ø×Ñ˜˜tŸ}™}Ô-Ø×Ñ˜˜zÕ*r%   c                 ó¼   — d}| j                  t        «      5 }t        |«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Ns   ¦
z#wanted type primitive, got 0xa6 tag)r   r   r   r<   r=   r>   r  s      r   Útest_with_constructedz(TestRemoveImplicit.test_with_constructedË  sN   € Ø"ˆà×Ñœ}Ó-ð 	"°Ü˜DÔ!÷	"ð 	�‰Ð;¼SÀÇÁÓ=MÕN÷	"ð 	"úr  c                 óª   — d}t        t        d|d«      d«      \  }}}| j                  |d«       | j                  ||«       | j                  |d«       y )Ns   some longish stringr  r.  r%   )r   r   r'   r  s        r   Útest_encode_decodez%TestRemoveImplicit.test_encode_decodeÓ  sW   € Ø%ˆä)Ü˜A˜t ]Ó3°]ó
‰ˆˆT�4ð 	×Ñ˜˜aÔ Ø×Ñ˜˜tÔ$Ø×Ñ˜˜sÕ#r%   N)rF   rG   rH   r  rç   r  r)  r,  r/  r2  r5  r7  r9  rI   r%   r   r  r  ‘  s>   „ Øñ/ó ð/ò$òEò
ò$ò$ò	+òOó	$r%   r  c                   ó@   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚTestEncodeImplicitc                 ó<   — d| _         d| _        d| _        d| _        y )Nr  r  r  r  )r  r!  r"  r#  rå   s    r   rç   zTestEncodeImplicit.setUpClassà  s!   € àˆŒà2ˆÔà$7ˆÔ!à.ˆÕr%   c                 óh   — t        d| j                  «      }| j                  || j                  «       y )Nr  ©r   r  r'   r"  ©r   r›   s     r   Útest_encode_with_default_classz1TestEncodeImplicit.test_encode_with_default_classê  s(   € Ü˜a §¡Ó+ˆà×Ñ˜˜d×8Ñ8Õ9r%   c                 ój   — t        d| j                  d«      }| j                  || j                  «       y )Nr  r.  )r   r  r'   r!  r?  s     r   Ú"test_encode_with_application_classz5TestEncodeImplicit.test_encode_with_application_classï  s*   € Ü˜a §¡¨MÓ:ˆà×Ñ˜˜d×3Ñ3Õ4r%   c                 ój   — t        d| j                  d«      }| j                  || j                  «       y )Nr  zcontext-specificr>  r?  s     r   Ú'test_encode_with_context_specific_classz:TestEncodeImplicit.test_encode_with_context_specific_classô  s+   € Ü˜a §¡Ð,>Ó?ˆà×Ñ˜˜d×8Ñ8Õ9r%   c                 ój   — t        d| j                  d«      }| j                  || j                  «       y )Nr  r1  )r   r  r'   r#  r?  s     r   Útest_encode_with_private_classz1TestEncodeImplicit.test_encode_with_private_classù  s*   € Ü˜a §¡¨IÓ6ˆà×Ñ˜˜d×/Ñ/Õ0r%   c                 óÐ   — | j                  t        «      5 }t        d| j                  d«       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr  r(  zinvalid tag class©r   r‡   r   r  r<   r=   r>   r?   s     r   Útest_encode_with_invalid_classz1TestEncodeImplicit.test_encode_with_invalid_classþ  sQ   € Ø×ÑœzÓ*ð 	4¨aÜ˜A˜tŸy™y¨(Ô3÷	4ð 	�‰Ð)¬3¨q¯{©{Ó+;Õ<÷	4ð 	4ús   –AÁA%c                 óÎ   — | j                  t        «      5 }t        d| j                  «       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Né    zLong tags not supportedrH  r?   s     r   Útest_encode_with_too_large_tagz1TestEncodeImplicit.test_encode_with_too_large_tag  sO   € Ø×ÑœzÓ*ð 	+¨aÜ˜B §	¡	Ô*÷	+ð 	�‰Ð/´°Q·[±[Ó1AÕB÷	+ð 	+úr*  N)rF   rG   rH   r  rç   r@  rB  rD  rF  rI  rL  rI   r%   r   r;  r;  ß  s3   „ Øñ/ó ð/ò:ò
5ò
:ò
1ò
=óCr%   r;  c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestRemoveOctetStringc                 ól   — d}t        |«      \  }}| j                  |d«       | j                  |d«       y )Ns   ª»Ìs   ª»Ìr%   )r   r'   ©r   r  r  r’   s       r   r  z!TestRemoveOctetString.test_simple  s5   € Ø&ˆÜ(¨Ó.‰
ˆˆdØ×Ñ˜˜Ô/Ø×Ñ˜˜sÕ#r%   c                 ó¼   — d}| j                  t        «      5 }t        |«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Ns   ª»ÌÚoctetstring)r   r   r   r<   r=   r>   r  s      r   r  z-TestRemoveOctetString.test_with_malformed_tag  sM   € Ø&ˆØ×Ñœ}Ó-ð 	&°Ü Ô%÷	&ð 	�‰�m¤S¨¯©Ó%5Õ6÷	&ð 	&úr  Nr  rI   r%   r   rN  rN    s   „ ò$ó7r%   rN  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestRemoveSequencec                 ól   — d}t        |«      \  }}| j                  |d«       | j                  |d«       y )Ns   0ÿªr  r%   )r   r'   rP  s       r   r  zTestRemoveSequence.test_simple  s5   € Ø"ˆÜ$ TÓ*‰
ˆˆdØ×Ñ˜˜{Ô+Ø×Ñ˜˜sÕ#r%   c                 ó¸   — | j                  t        «      5 }t        d«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Nr%   zEmpty string©r   r   r   r<   r=   r>   r?   s     r   Útest_with_empty_stringz)TestRemoveSequence.test_with_empty_string!  sH   € Ø×Ñœ}Ó-ð 	!°Ü˜CÔ ÷	!ð 	�‰�n¤c¨!¯+©+Ó&6Õ7÷	!ð 	!úrB   c                 ó¼   — d}| j                  t        «      5 }t        |«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Ns    ÿªzwanted type 'sequence'rW  r  s      r   Útest_with_wrong_tagz&TestRemoveSequence.test_with_wrong_tag'  sN   € Ø"ˆà×Ñœ}Ó-ð 	"°Ü˜DÔ!÷	"ð 	�‰Ð.´°A·K±KÓ0@ÕA÷	"ð 	"úr  c                 ó¼   — d}| j                  t        «      5 }t        |«       d d d «       | j                  dt	        j
                  «      «       y # 1 sw Y   Œ/xY w)Ns   0ÿªrD   rW  r  s      r   Útest_with_wrong_lengthz)TestRemoveSequence.test_with_wrong_length/  sM   € Ø"ˆà×Ñœ}Ó-ð 	"°Ü˜DÔ!÷	"ð 	�‰�o¤s¨1¯;©;Ó'7Õ8÷	"ð 	"úr  N)rF   rG   rH   r  rX  rZ  r\  rI   r%   r   rT  rT    s   „ ò$ò8òBó9r%   rT  rZ   i   é2   c                 ó@  —  | t        j                  dd¬«      «      }|dk  r | t        j                  dd¬«      «      }n | t        j                  d|¬«      «      } | t        j                  t        j                  d|¬«      |¬«      «      }||ft        |«      z   S )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   rZ   )Ú	min_valueÚ	max_valuerÞ   )Úmax_size)ÚstÚintegersÚlistsÚtuple)Údrawr`  ra  ÚfirstÚsecondr’   s         r   Úst_oidri  8  s…   € ñ ”—‘ q°AÔ6Ó7€EØˆq‚yÙ”b—k‘k¨A¸Ô<Ó=‰á”b—k‘k¨A¸ÔCÓDˆÙÜ
�‰Ü�K‰K !¨yÔ9ÀHô	
ó€Dð
 �6ˆ?œU 4›[Ñ(Ð(r%   z--fastÚmax_examplesc                 óL   — t        | Ž }t        |«      \  }}|dk(  sJ ‚|| k(  sJ ‚y r1   )r   r   )ÚidsrÃ   Údecoded_oidr’   s       r   Ú	test_oidsrn  T  s7   € ô ˜cÐ"€KÜ% kÓ2Ñ€K�Ø�3Š;Ðˆ;Ø˜#ÒÐÑr%   c                  ó~   — d} t        j                  t        d¬«      5  t        | «       d d d «       y # 1 sw Y   y xY w)Ns   ‚ ABCú&Length longer than the provided buffer©Úmatch)rn   Úraisesr   r   ©Úbads    r   Ú1test_remove_octet_string_rejects_truncated_lengthrv  \  s3   € à
&€CÜ	�‰”}Ð,TÔ	Uñ !Ü˜CÔ ÷!÷ !ñ !úó   ž3³<c                  ó~   — d} t        j                  t        d¬«      5  t        | «       d d d «       y # 1 sw Y   y xY w)Ns    ‚ ABCrp  rq  )rn   rs  r   r   rt  s    r   Ú0test_remove_constructed_rejects_truncated_lengthry  b  s5   € ð '€CÜ	�‰”}Ð,TÔ	Uñ  Ü˜3Ô÷ ÷  ñ  úrw  c                  ó~   — d} t        j                  t        d¬«      5  t        | «       d d d «       y # 1 sw Y   y xY w)Ns   €‚ ABCrp  rq  )rn   rs  r   r   rt  s    r   Ú-test_remove_implicit_rejects_truncated_lengthr{  i  s5   € ð '€CÜ	�‰”}Ð,TÔ	Uñ Ü˜Ô÷÷ ñ úrw  rI   )5rl   Úbinasciir   Ú	unittest2ÚunittestÚImportErrorÚsysÚhypothesis.strategiesÚ
strategiesrb  Ú
hypothesisr   r   rn   Ú_compatr   Úcurvesr   r	   rt   r
   r   r   r   r   r   r   r   r   r   r   r   ÚTestCaser   rK   rg   r�   r°   r¼   rã   r
  r  r;  rN  rT  Ú	compositeri  ÚHYP_SETTINGSÚargvrn  rv  ry  r{  rI   r%   r   ú<module>rŠ     sµ  ðó Ý ðÛ ó Ý "ß &Û Ý #ß &÷÷ ÷ ó ô 99˜×)Ñ)ô 99ôx#)�X×&Ñ&ô #)ôL7)˜(×+Ñ+ô 7)ôtE8˜(×+Ñ+ô E8ôPD�h×'Ñ'ô Dô(�H×%Ñ%ô (ôVA/�x×(Ñ(ô A/ôH;˜H×-Ñ-ô ;ô&K$˜×*Ñ*ô K$ô\)C˜×*Ñ*ô )CôX7˜H×-Ñ-ô 7ô9˜×*Ñ*ô 9ð< ‡�Ø˜c™6¨Bò )ó ð)ð( €ð ˆs�x‰xÑØ#$€L�Ñ ñ 
ÑˆLÑÙ�vƒxƒñó ó ðò!ò óøðC ò Þðús   ŒF! Æ!	F.Æ-F.