Ë
    V.j,  ã                   ó*	  — d dl mZmZ d dlZ	 d dlmZ eD � cg c]  } | dvr| ‘Œ
 c} 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mZmZmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZmZ ddlmZmZmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& dZ'	 eD �cg c]  }|ejQ                  |«      jR                  f‘Œ! c}Z*	 de	jV                  v reegZg Z,	  e-ed„ ¬«      D ]¡  Z. e-e*d„ ¬«      D ��cg c]  \  }}d |cxk  re.j^                  k  rn n|‘Œ! c}}D ]f  Z0 ejb                  e. eejP                  e0«      ¬«      Z2e,jg                  dji                  e.e0«      e2jj                  e2jm                  e'e¬«      f«       Œh Œ£ ejn                  jq                  de,D ���cg c]  \  }}}ejs                  |||¬«      ‘Œ c}}}«      d„ «       Z:ejv                  d„ «       Z<i Z=e	j|                  dk\  r1d dlm?Z? de=d<   e?j€                  e?j‚                  e?j„                  ge=d <   de	jV                  v rd!e=d"<    eCe=«      ZDde	jV                  v rdeDd"<   nd#eDd"<    ed5i eD¤Ž e e<e,«      «      d$„ «       «       ZEejv                  d%„ «       ZF ed5i eD¤Ž e eF«       «      d&„ «       «       ZGd'„ ZHejv                  d(„ «       ZId)„ ZJd*„ ZKejv                  d+„ «       ZLd,„ ZM ed5i eD¤Ž e ejœ                  e,«       eM«       «      d-„ «       «       ZO ed5i eD¤Ž e ejœ                  e,«       ej                   d.¬/«      «       ee,d     e# ed «       ed «      «      «       ee,d     e# ed«       ed«      «      d0z   «       ee,d     e# ed«      gd1z  Ž «      d2„ «       «       «       «       «       ZQe,D ���cg c]]  \  }}} eR|j\                  j\                  e&«      s:|| e e||j\                  j¦                  «      d3|j\                  j¦                  iŽf‘Œ_ c}}}ZT	 eTe,D ���cg c](  \  }}} eR|j\                  j\                  e&«      r|||f‘Œ* c}}}z  ZT ed5i eD¤Ž e e<eT«      «      d4„ «       «       ZUy# e$ r g d¢ZY �ŒXw xY wc c} w c c}w c c}}w c c}}}w c c}}}w c c}}}w )6é    )Úwith_statementÚdivisionN)Úalgorithms_available)Úmd5Úsha1Úsha224Úsha256Úsha384Úsha512)Úmdc2Úmd2Úmd4Ú	whirlpoolÚ	ripemd160)Úpartial)ÚnoteÚassumeÚgivenÚsettingsÚexampleé   )Ú
SigningKey)ÚBadSignatureError)Úsigencode_derÚsigencode_string)Úsigdecode_derÚsigdecode_string)ÚcurvesÚ	SECP112r2Ú	SECP128r1)Úencode_integerÚencode_bitstringÚencode_octet_stringÚ
encode_oidÚencode_sequenceÚencode_constructed)Ú	CurveEdTws   some data to signz--fastc                 ó   — | j                   S ©N)Úbaselen©Úxs    ú[C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\ecdsa/test_malformed_sigs.pyÚ<lambda>r.   C   s   € ¨!¯)ª)ó    )Úkeyc                 ó   — | d   S )Nr   © r+   s    r-   r.   r.   F   s   € ¸aÀºdr/   )Úhashfuncz{0} {1})Ú	sigencodezverifying_key,signature)Úidc                 ó@   — | j                  |t        t        ¬«      sJ ‚y ©N©Ú	sigdecode)ÚverifyÚexample_datar   )Úverifying_keyÚ	signatures     r-   Útest_signaturesr>   W   s(   € ð
 ×ÑØ”<¬=ð  ô ð ñ r/   c           
      óà  —  | t        j                  |«      «      \  }}}t        dj                  |«      «       t	        |«      } | t        j
                  t        j                  dt        |«      dz
  ¬«      d¬«      «      }|j                  «        t        |«      D ]  }||= Œ t        dj                  |«      «       d}|r‘ | t        j                  t        j                  dt        |«      dz
  ¬«      t        j                  dd	¬«      «      «      }|j                  «       D ]  \  }}	||xx   |	z  cc<   Œ t        d
j                  |«      «        | t        j                  dt        |«      ¬«      «      }
 | t        j                  d¬«      «      }|d|
 |z   ||
d z   }t        dj                  |
|«      «       t        |«      }t        |xs |xs |«       t        ||k7  «       ||fS )zˆ
    Hypothesis strategy that generates pairs of VerifyingKey and malformed
    signatures created by fuzzing of a valid signature.
    úConfiguration: {0}r   r   ©Ú	min_valueÚ	max_valueT)ÚuniquezRemove bytes: {0}Néÿ   z	xors: {0}é   ©Úmax_sizez%Inserted at position {0} bytes: {1!r})ÚstÚsampled_fromr   ÚformatÚ	bytearrayÚlistsÚintegersÚlenÚsortÚreversedÚdictionariesÚitemsÚbinaryÚbytesr   )ÚdrawÚkeys_and_sigsÚnamer<   Úold_sigÚsigÚ	to_removeÚiÚxorsÚvalÚ
insert_posÚinsert_datas               r-   Úst_fuzzed_sigra   a   s°  € ñ $(¬¯©¸Ó(FÓ#GÑ €Dˆ-˜ÜÐ	×	$Ñ	$ TÓ	*Ô+ä
�GÓ
€Cñ Ü
�‰”—‘ q´C¸³H¸q±LÔAÈ$ÔOó€Ið ‡N�NÔÜ�iÖ ˆØ�‰Fð !äÐ	×	#Ñ	# IÓ	.Ô/ð €DÙ
ÙÜ�O‰OÜ—‘ a´3°s³8¸a±<Ô@Ü—‘ a°3Ô7óó
ˆð —j‘j–l‰FˆAˆsØ�‹F�c‰MŒFð #äˆ[×Ñ Ó%Ô&ñ ”b—k‘k¨A¼¸S»ÔBÓC€Já”r—y‘y¨#Ô.Ó/€Kà
ˆkˆzÐ
˜[Ñ
(¨3¨z¨{Ð+;Ñ
;€CÜØ/×6Ñ6°zÀ;ÓOôô �‹*€Cä
ˆ9Ò+˜Ò+ Ô,ä
ˆ3�'‰>Ôà˜#ÐÐr/   )é   é   )ÚHealthCheckiˆ  ÚdeadlineÚsuppress_health_checké   Úmax_examplesé
   c                 ó¢   — | \  }}t        j                  t        «      5  |j                  |t        t
        ¬«       d d d «       y # 1 sw Y   y xY wr7   ©ÚpytestÚraisesr   r:   r;   r   )Úargsr<   rZ   s      r-   Útest_fuzzed_der_signaturesro   «   s<   € ð Ñ€M�3ä	�‰Ô(Õ	)Ø×Ñ˜S¤,¼-ÐÔH÷ 
*×	)Ñ	)úó   ŸAÁAc                 óö  —  | t        j                  t        «      «      \  }}}t        dj	                  |«      «       t        |j                  j                  «      } | t        j                  d|dz  ¬«      t        j                  |dz	  |dz   ¬«      z  «      } | t        j                  d|dz  ¬«      t        j                  |dz	  |dz   ¬«      z  «      }t        t        |«      t        |«      «      }||fS )zÊ
    Hypothesis strategy for selecting random values and encoding them
    to ECDSA-Sig-Value object::

        ECDSA-Sig-Value ::= SEQUENCE {
            r INTEGER,
            s INTEGER
        }
    r@   r   é   rA   rb   r   )rI   rJ   rW   r   rK   ÚintÚcurveÚorderrN   r%   r!   )rV   rX   r<   Ú_ru   ÚrÚsrZ   s           r-   Úst_random_der_ecdsa_sig_valuery   ´   sß   € ñ "¤"§/¡/´-Ó"@ÓAÑ€Dˆ-˜ÜÐ	×	$Ñ	$ TÓ	*Ô+Ü�×#Ñ#×)Ñ)Ó*€Eñ 	Ü
�‰˜a¨5°A©:Ô6Ü
�+‰+ ¨¡
°e¸a±iÔ
@ñ	Aó	€Añ 	Ü
�‰˜a¨5°A©:Ô6Ü
�+‰+ ¨¡
°e¸a±iÔ
@ñ	Aó	€Aô
 œ.¨Ó+¬^¸AÓ->Ó
?€Cà˜#ÐÐr/   c                 ó¢   — | \  }}t        j                  t        «      5  |j                  |t        t
        ¬«       ddd«       y# 1 sw Y   yxY w)zd
    Check if random values encoded in ECDSA-Sig-Value structure are rejected
    as signature.
    r8   Nrk   ©Úparamsr<   rZ   s      r-   Útest_random_der_ecdsa_sig_valuer}   Ö   s<   € ð  Ñ€M�3ä	�‰Ô(Õ	)Ø×Ñ˜S¤,¼-ÐÔH÷ 
*×	)Ñ	)úrp   c                  ón   — d|vrd|d<   t        j                  t        t        j                  | i |¤Ž«      S )z’
    Hypothesis strategy that returns a random positive integer as DER
    INTEGER.
    Parameters are passed to hypothesis.strategy.integer.
    rB   r   )rI   Úbuildsr!   rN   ©rn   Úkwargss     r-   Úst_der_integerr‚   ã   s5   € ð ˜&Ñ Øˆˆ{ÑÜ�9‰9”^¤R§[¡[°$Ð%A¸&Ñ%AÓBÐBr/   c                 óâ   —  | t        j                  |i |¤Ž«      }|rE | t        j                  dd¬«      «      }t        |«      }|dxx   d|z   z  cc<   t	        |«      }nd}t        ||«      S )z|
    Hypothesis strategy that returns a random DER BIT STRING.
    Parameters are passed to hypothesis.strategy.binary.
    r   rc   rA   éÿÿÿÿrb   )rI   rT   rN   rL   rU   r"   )rV   rn   r�   ÚdataÚunuseds        r-   Úst_der_bit_stringr‡   î   sl   € ñ ”—	‘	˜4Ð* 6Ñ*Ó+€DÙÙ”b—k‘k¨A¸Ô;Ó<ˆÜ˜‹ˆØˆR‹�a˜‘i�LÑ ‹Ü�T‹{‰àˆÜ˜D &Ó)Ð)r/   c                  ó\   — t        j                  t        t        j                  | i |¤Ž«      S )z„
    Hypothesis strategy that returns a random DER OCTET STRING object.
    Parameters are passed to hypothesis.strategy.binary
    )rI   r   r#   rT   r€   s     r-   Úst_der_octet_stringr‰   ÿ   s$   € ô
 �9‰9Ô(¬"¯)©)°TÐ*D¸VÑ*DÓEÐEr/   c                  ó,   — t        j                  d«      S )z;
    Hypothesis strategy that returns DER NULL object.
    s    )rI   Újustr2   r/   r-   Úst_der_nullrŒ     s   € ô �7‰7�;ÓÐr/   c           	      óF  —  | t        j                  dd¬«      «      }|dk  r | t        j                  dd¬«      «      }n  | t        j                  dddz  ¬«      «      } | t        j                  t        j                  dddz  ¬«      d¬«      «      }t        ||g|¢­Ž S )zI
    Hypothesis strategy that returns DER OBJECT IDENTIFIER objects.
    r   rb   rA   é'   i   é2   rG   )rI   rN   rM   r$   )rV   ÚfirstÚsecondÚrests       r-   Ú
st_der_oidr“     s‰   € ñ
 ”—‘ q°AÔ6Ó7€EØˆq‚yÙ”b—k‘k¨A¸Ô<Ó=‰á”b—k‘k¨A¸¸C¹Ô@ÓAˆÙÜ
�‰”—‘ q°A°s±FÔ;ÀbÔIó€Dô �e˜VÐ+ dÒ+Ð+r/   c                  óÚ   — t        j                  t        j                  d«      t        ddz  ¬«      z  t	        d¬«      z  t        d¬«      z  t        «       z  t        «       z  d„ d¬	«      S )
zö
    Hypothesis strategy that returns random DER structures.

    A valid DER structure is any primitive object, an octet encoding
    of a valid DER structure, sequence of valid DER objects or a constructed
    encoding of any of the above.
    r/   rb   i   )rC   é   rG   c                 ó”  — t        j                  t        t        j                  | «      «      t        j                  d„ t        j                  | «      «      z  t        j                  d„ t        j                  | d¬«      «      z  t        j                  t
        t        j                  dd¬«      t        j                  | «      «      z  S )Nc                 ó   — t        | d«      S )Nr   )r"   r+   s    r-   r.   z*st_der.<locals>.<lambda>.<locals>.<lambda>.  s   € Ô.¨q°!Ô4r/   c                 ó   — t        | Ž S r)   )r%   r+   s    r-   r.   z*st_der.<locals>.<lambda>.<locals>.<lambda>0  s	   € ”o qÑ)r/   éÈ   rG   r   é?   rA   )rI   r   r#   Úone_ofrM   r&   rN   )Úchildrens    r-   r.   zst_der.<locals>.<lambda>-  sˆ   € œŸ™Ô#6¼¿	¹	À(Ó8KÓLÜ
�)‰)Ñ4´b·i±iÀÓ6IÓ
JñKä
�)‰)Ù)¬2¯8©8°HÀsÔ+Kó
ñ
ô
 �)‰)ÜÜ�K‰K !¨tÔ4Ü�I‰I�hÓó
ò	
r/   é(   )Ú
max_leaves)rI   Ú	recursiver‹   r‚   r‡   r‰   rŒ   r“   r2   r/   r-   Úst_derr      so   € ô �<‰<Ü
�‰�‹Ü
 1 d¡7Ô
+ñ	,ä
 WÔ
-ñ	.ô  wÔ
/ñ	0ô ‹-ñ		ô
 ‹,ñ	ñ		
ð ô#ð r/   c                 ó¤   — | \  }}}t        j                  t        «      5  |j                  |t        t
        ¬«       ddd«       y# 1 sw Y   yxY w)z8Check if random DER structures are rejected as signaturer8   Nrk   ©r|   ÚderrX   r<   rv   s        r-   Útest_random_der_as_signaturer¤   ;  s>   € ð $Ñ€Dˆ-˜ä	�‰Ô(Õ	)Ø×Ñ˜S¤,¼-ÐÔH÷ 
*×	)Ñ	)úó    AÁAr•   rG   ó    é   c                 ó¤   — | \  }}}t        j                  t        «      5  |j                  |t        t
        ¬«       ddd«       y# 1 sw Y   yxY w)z/Check if random bytes are rejected as signaturer8   Nrk   r¢   s        r-   Útest_random_bytes_as_signaturer©   E  s>   € ð $Ñ€Dˆ-˜ä	�‰Ô(Õ	)Ø×Ñ˜S¤,¼-ÐÔH÷ 
*×	)Ñ	)úr¥   ru   c                 ó¢   — | \  }}t        j                  t        «      5  |j                  |t        t
        ¬«       d d d «       y # 1 sw Y   y xY wr7   )rl   rm   r   r:   r;   r   r{   s      r-   Útest_fuzzed_string_signaturesr«   t  s=   € ð  Ñ€M�3ä	�‰Ô(Õ	)Ø×Ñ˜S¤,Ô:JÐÔK÷ 
*×	)Ñ	)úrp   r2   )VÚ
__future__r   r   Úhashlibr   ÚImportErrorÚ	functoolsr   rl   ÚsysÚhypothesis.strategiesÚ
strategiesrI   Ú
hypothesisr   r   r   r   r   Úkeysr   r   Úutilr   r   r   r   r   r   r    r£   r!   r"   r#   r$   r%   r&   Úellipticcurver'   r;   ÚnewÚdigest_sizeÚhash_and_sizeÚargvrW   Úsortedrt   r*   Úhash_algÚgenerateÚskÚappendrK   r<   ÚsignÚmarkÚparametrizeÚparamr>   Ú	compositera   r|   Úversion_inford   Údata_too_largeÚfilter_too_muchÚtoo_slowÚdictÚslow_paramsro   ry   r}   r‚   r‡   r‰   rŒ   r“   r    rJ   r¤   rT   r©   Ú
isinstanceru   Úkeys_and_string_sigsr«   )r\   rX   ÚsizeÚvkrZ   r<   s   000000r-   Ú<module>rÏ      sy  ðß /ã ð
Ý,ñ "óá!ˆØÐ@Ñ@ò Ø!ñÐ õ
 Û Û 
Ý "ß =Õ =å Ý #ß 1ß 1ß 0Ñ 0÷÷ õ %ð $€Ø Iñ 7KóÙ6J¨d€Tˆ7�;‰;�tÓ×(Ñ(Ò)Ð6Jñ€ð&ð
 ˆs�x‰xÑØ˜Ð#€Fð €Ø Iñ �FÑ 3×4€Eñ ! ±NÕCôáC‰JˆD�$ØˆtÔ$�u—}‘}Õ$ò 	ØCõˆð
 !ˆZ× Ñ Ø™G G§K¡K°Ó:ô
ˆð 	×Ñà× Ñ  ¨Ó1Ø× Ñ Ø—‘˜°�Ó>ðõ	
ñð 5ð( ‡�×ÑØÙ9FÕG¹©¨¨b°#€V‡\�\�"�c˜d€\Õ#¸ÓGóñó	ðð ‡�ñ0ó ð0ðf 
€à×Ñ�vÒÝ&ð €Fˆ:Ñà×"Ñ"Ø×#Ñ#Ø×Ñð'€FÐ"Ñ#ð
 ˆs�x‰xÑØ€Fˆ>Ñá�6‹l€Øˆs�x‰xÑØ"#€K�Òà"$€K�Ññ 
ÑˆKÑÙ�}�]Ó#Ó$ñIó %ó ðIð ‡�ñó ðñB 
ÑˆKÑÙÑ$Ó&Ó'ñIó (ó ðIòCð ‡�ñ*ó ð*ò Fò ð ‡�ñ,ó ð,òñ: 
ÑˆKÑÙ€€r‡��}Ó%¡v£xÓ0ñIó 1ó ðIñ 
ÑˆKÑÙ€€r‡��}Ó% y r§y¡y¸'Ô'BÓCÙØ�!Ñ‘o¡n°QÓ&7¹ÈÓ9JÓKóñ 	Ø�!ÑÙ‘N 1Ó%¡~°aÓ'8Ó9¸GÑCóñ 	ˆ�qÑ	™?©^¸AÓ->Ð,?À!Ñ,CÐDÓEñIó Fó	óó Dó ðIñ" %2õñ %2Ñ ˆˆm˜SÙ�m×)Ñ)×/Ñ/°Ô;ð 	ØÙÙ˜3 × 3Ñ 3× 9Ñ 9Ó:ð	
à×%Ñ%×+Ñ+ñ	
òð %2óÐ ðð ñ %2õñ %2Ñ ˆˆm˜SÙ�-×%Ñ%×+Ñ+¨YÔ7ð 	ØØòð
 %2óñ Ð ñ 
ÑˆKÑÙ�}Ð)Ó*Ó+ñLó ,ó ñLøð_ ò òÓðüòùò>ùó$ùô* Hùô|ùô$s5   ŽQ  ˜Q0Â$Q5Ã&$Q:ÆR ÎA"RÐ-R
Ñ 	Q-Ñ,Q-