§
    qŠtj,  ã                   ó‚  — d dl mZmZ d dlZ	 d dlmZ n# e$ r g d¢ZY nw xY wd„ eD ¦   «         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'	 d„ eD ¦   «         Z(	 de	j)        v reegZg Z*	  e+ed„ ¬¦  «        D ]„Z,d„  e+e(d„ ¬¦  «        D ¦   «         D ]iZ- ej.        e, eej/        e-¦  «        ¬¦  «        Z0e* 1                    d 2                    e,e-¦  «        e0j3        e0 4                    e'e¬¦  «        f¦  «         ŒjŒ…ej5         6                    dd„ e*D ¦   «         ¦  «        d„ ¦   «         Z7ej8        d„ ¦   «         Z9i Z:e	j;        dk    r"d dlm<Z< d e:d!<   e<j=        e<j>        e<j?        ge:d"<   de	j)        v rd#e:d$<    e@e:¦  «        ZAde	j)        v rdeAd$<   nd%eAd$<    ed8i eA¤Ž e e9e*¦  «        ¦  «        d&„ ¦   «         ¦   «         ZBej8        d'„ ¦   «         ZC ed8i eA¤Ž e eC¦   «         ¦  «        d(„ ¦   «         ¦   «         ZDd)„ ZEej8        d*„ ¦   «         ZFd+„ ZGd,„ ZHej8        d-„ ¦   «         ZId.„ ZJ ed8i eA¤Ž e ejK        e*¦  «         eJ¦   «         ¦  «        d/„ ¦   «         ¦   «         ZL ed8i eA¤Ž e ejK        e*¦  «         ejM        d0¬1¦  «        ¦  «         ee*d           e# ed ¦  «         ed ¦  «        ¦  «        ¦  «         ee*d           e# ed¦  «         ed¦  «        ¦  «        d2z   ¦  «         ee*d           e# ed¦  «        gd3z  Ž ¦  «        d4„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ZNd5„ e*D ¦   «         ZO	 eOd6„ e*D ¦   «         z  ZO ed8i eA¤Ž e e9eO¦  «        ¦  «        d7„ ¦   «         ¦   «         ZPdS )9é    )Úwith_statementÚdivisionN)Úalgorithms_available)Úmd5Úsha1Úsha224Úsha256Úsha384Úsha512c                 ó   — g | ]}|d v¯|‘Œ	S ))Úmdc2Úmd2Úmd4Ú	whirlpoolÚ	ripemd160© )Ú.0Úis     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/ecdsa/test_malformed_sigs.pyú
<listcomp>r      s.   € ð ð ð à	ØÐ@Ð@Ð@ð à@Ð@Ð@ó    )Ú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 signc                 óD   — g | ]}|t          j        |¦  «        j        f‘ŒS r   )ÚhashlibÚnewÚdigest_size)r   Únames     r   r   r   2   s7   € ð ð ð Ø.2€T�7Œ;�tÑÔÔ(Ð)ðð ð r   z--fastc                 ó   — | j         S ©N)Úbaselen©Úxs    r   ú<lambda>r9   C   s   € ¨!¬)€ r   )Úkeyc                 óL   — g | ]!\  }}d |cxk     rt           j        k    ¯n n|‘Œ"S )r   )Úcurver6   )r   r3   Úsizes      r   r   r   D   sJ   € ð ð ð áˆD�$ØˆtÐ$Ð$Ò$Ð$•u”}Ò$Ð$Ð$Ð$Ð$ð 	à$Ð$Ð$r   c                 ó   — | d         S )Nr   r   r7   s    r   r9   r9   F   s
   € ¸aÀ¼d€ r   )Úhashfuncz{0} {1})Ú	sigencodezverifying_key,signaturec                 óD   — g | ]\  }}}t          j        |||¬ ¦  «        ‘ŒS ))Úid)ÚpytestÚparam)r   r3   ÚvkÚsigs       r   r   r   Y   s/   € ÐGÐGÐG©¨¨b°#…V„\�"�c˜dÐ#Ñ#Ô#ÐGÐGÐGr   c                 óN   — |                       |t          t          ¬¦  «        sJ ‚d S ©N©Ú	sigdecode)ÚverifyÚexample_datar#   )Úverifying_keyÚ	signatures     r   Útest_signaturesrO   W   s<   € ð
 ×ÒØ•<­=ð  ñ ô ð ð ð ð ð r   c           
      óŠ  —  | t          j        |¦  «        ¦  «        \  }}}t          d                     |¦  «        ¦  «         t	          |¦  «        } | t          j        t          j        dt          |¦  «        dz
  ¬¦  «        d¬¦  «        ¦  «        }|                     ¦   «          t          |¦  «        D ]}||= Œt          d                     |¦  «        ¦  «         d}|r¢ | t          j
        t          j        dt          |¦  «        dz
  ¬¦  «        t          j        dd	¬¦  «        ¦  «        ¦  «        }|                     ¦   «         D ]\  }}	||xx         |	z  cc<   Œt          d
                     |¦  «        ¦  «          | t          j        dt          |¦  «        ¬¦  «        ¦  «        }
 | t          j        d¬¦  «        ¦  «        }|d|
…         |z   ||
d…         z   }t          d                     |
|¦  «        ¦  «         t          |¦  «        }t          |p|p|¦  «         t          ||k    ¦  «         ||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_sigsr3   rM   Úold_sigrF   Ú	to_remover   ÚxorsÚvalÚ
insert_posÚinsert_datas               r   Úst_fuzzed_sigro   a   sR  € ð $( 4­¬¸Ñ(FÔ(FÑ#GÔ#GÑ €Dˆ-˜ÝÐ	×	$Ò	$ TÑ	*Ô	*Ñ+Ô+Ð+å
�GÑ
Ô
€Cð �Ý
Œ•” qµC¸±H´H¸q±LÐAÑAÔAÈ$ÐOÑOÔOñô €Ið ‡N‚NÑÔÐÝ�iÑ Ô ð ð ˆØ�ˆFˆFÝÐ	×	#Ò	# IÑ	.Ô	.Ñ/Ô/Ð/ð €DØ
ð 	'ØˆtÝŒOÝ” aµ3°s±8´8¸a±<Ð@Ñ@Ô@Ý” a°3Ð7Ñ7Ô7ñô ñ
ô 
ˆð —j’j‘l”lð 	ð 	‰FˆAˆsØ�ˆFˆFŒF�c‰MˆFˆF‰FˆFÝˆ[×Ò Ñ%Ô%Ñ&Ô&Ð&ð �•b”k¨A½¸S¹¼ÐBÑBÔBÑCÔC€Jà�$•r”y¨#Ð.Ñ.Ô.Ñ/Ô/€Kà
ˆkˆzˆkÔ
˜[Ñ
(¨3¨z¨{¨{Ô+;Ñ
;€CÝØ/×6Ò6°zÀ;ÑOÔOñô ð õ �‰*Œ*€Cå
ˆ9Ð+˜Ð+ Ñ,Ô,Ð,å
ˆ3�'Š>ÑÔÐà˜#ÐÐr   )é   é   )ÚHealthCheckiˆ  ÚdeadlineÚsuppress_health_checké   Úmax_examplesé
   c                 ó¸   — | \  }}t          j        t          ¦  «        5  |                     |t          t
          ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rH   ©rC   Úraisesr    rK   rL   r#   )ÚargsrM   rF   s      r   Útest_fuzzed_der_signaturesr|   «   s²   € ð Ñ€M�3å	ŒÕ(Ñ	)Ô	)ð Ið IØ×Ò˜S¥,½-ÐÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið Ió   Ÿ#AÁAÁAc                 ó  —  | t          j        t          ¦  «        ¦  «        \  }}}t          d                     |¦  «        ¦  «         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
        }
    rQ   r   é   rR   rp   r   )rZ   r[   rh   r   r\   Úintr<   Úorderr_   r,   r(   )rg   r3   rM   Ú_r�   ÚrÚsrF   s           r   Úst_random_der_ecdsa_sig_valuer…   ´   s  € ð "˜T¥"¤/µ-Ñ"@Ô"@ÑAÔAÑ€Dˆ-˜ÝÐ	×	$Ò	$ TÑ	*Ô	*Ñ+Ô+Ð+Ý�Ô#Ô)Ñ*Ô*€Eð 	ˆÝ
Œ˜a¨5°A©:Ð6Ñ6Ô6Ý
Œ+ ¨¡
°e¸a±iÐ
@Ñ
@Ô
@ñ	Añ	ô 	€Að 	ˆÝ
Œ˜a¨5°A©:Ð6Ñ6Ô6Ý
Œ+ ¨¡
°e¸a±iÐ
@Ñ
@Ô
@ñ	Añ	ô 	€Aõ
 �.¨Ñ+Ô+­^¸AÑ->Ô->Ñ
?Ô
?€Cà˜#ÐÐr   c                 ó¸   — | \  }}t          j        t          ¦  «        5  |                     |t          t
          ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zd
    Check if random values encoded in ECDSA-Sig-Value structure are rejected
    as signature.
    rI   Nry   ©ÚparamsrM   rF   s      r   Útest_random_der_ecdsa_sig_valuer‰   Ö   s²   € ð  Ñ€M�3å	ŒÕ(Ñ	)Ô	)ð Ið IØ×Ò˜S¥,½-ÐÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið Ir}   c                  óf   — 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.
    rS   r   )rZ   Úbuildsr(   r_   ©r{   Úkwargss     r   Úst_der_integerrŽ   ã   s:   € ð ˜&Ð Ð Øˆˆ{ÑÝŒ9•^¥R¤[°$Ð%A¸&Ð%AÐ%AÑBÔBÐBr   c                 ó  —  | t          j        |i |¤Ž¦  «        }|rR | 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   rq   rR   éÿÿÿÿrp   )rZ   re   r_   r]   rf   r)   )rg   r{   r�   ÚdataÚunuseds        r   Úst_der_bit_stringr“   î   s‘   € ð ˆ4•”	˜4Ð* 6Ð*Ð*Ñ+Ô+€DØð Ø�•b”k¨A¸Ð;Ñ;Ô;Ñ<Ô<ˆÝ˜‰ŒˆØˆRˆˆŒ�a˜‘i�LÑ ˆˆ‰Ý�T‰{Œ{ˆˆàˆÝ˜D &Ñ)Ô)Ð)r   c                  óT   — 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
    )rZ   r‹   r*   re   rŒ   s     r   Úst_der_octet_stringr•   ÿ   s&   € õ
 Œ9Õ(­"¬)°TÐ*D¸VÐ*DÐ*DÑEÔEÐEr   c                  ó*   — t          j        d¦  «        S )z;
    Hypothesis strategy that returns DER NULL object.
    s    )rZ   Újustr   r   r   Úst_der_nullr˜     s   € õ Œ7�;ÑÔÐr   c           	      óX  —  | 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|¢R Ž S )zI
    Hypothesis strategy that returns DER OBJECT IDENTIFIER objects.
    r   rp   rR   é'   i   é2   rX   )rZ   r_   r^   r+   )rg   ÚfirstÚsecondÚrests       r   Ú
st_der_oidrŸ     s½   € ð
 ˆD•” q°AÐ6Ñ6Ô6Ñ7Ô7€EØˆq‚y€yØ�•b”k¨A¸Ð<Ñ<Ô<Ñ=Ô=ˆˆà�•b”k¨A¸¸C¹Ð@Ñ@Ô@ÑAÔAˆØˆ4Ý
Œ•” q°A°s±FÐ;Ñ;Ô;ÀbÐIÑIÔ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   rp   i   )rT   é   rX   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)   r7   s    r   r9   z*st_der.<locals>.<lambda>.<locals>.<lambda>.  s   € Õ.¨q°!Ñ4Ô4€ r   c                 ó   — t          | Ž S r5   )r,   r7   s    r   r9   z*st_der.<locals>.<lambda>.<locals>.<lambda>0  s   € •o qÐ)€ r   éÈ   rX   r   é?   rR   )rZ   r‹   r*   Úone_ofr^   r-   r_   )Úchildrens    r   r9   zst_der.<locals>.<lambda>-  s£   € �œÕ#6½¼	À(Ñ8KÔ8KÑLÔLÝ
Œ)Ð4Ð4µb´iÀÑ6IÔ6IÑ
JÔ
JñKå
Œ)Ø)Ð)­2¬8°HÀsÐ+KÑ+KÔ+Kñ
ô 
ñ
õ
 Œ)ÝÝŒK !¨tÐ4Ñ4Ô4ÝŒI�hÑÔñ
ô 
ñ	
€ r   é(   )Ú
max_leaves)rZ   Ú	recursiver—   rŽ   r“   r•   r˜   rŸ   r   r   r   Úst_derr¬     s’   € õ Œ<Ý
Œ�‰ŒÝ
 1 d¡7Ð
+Ñ
+Ô
+ñ	,å
 WÐ
-Ñ
-Ô
-ñ	.õ  wÐ
/Ñ
/Ô
/ñ	0õ ‰-Œ-ñ		õ
 ‰,Œ,ñ	ð		
ð 		
ð ð#ñ ô ð r   c                 óº   — | \  }}}t          j        t          ¦  «        5  |                     |t          t
          ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z8Check if random DER structures are rejected as signaturerI   Nry   ©rˆ   Úderr3   rM   r‚   s        r   Útest_random_der_as_signaturer°   ;  s´   € ð $Ñ€Dˆ-˜å	ŒÕ(Ñ	)Ô	)ð Ið IØ×Ò˜S¥,½-ÐÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið Ió    #AÁAÁAr¡   rX   ó    é   c                 óº   — | \  }}}t          j        t          ¦  «        5  |                     |t          t
          ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z/Check if random bytes are rejected as signaturerI   Nry   r®   s        r   Útest_random_bytes_as_signaturerµ   E  s´   € ð $Ñ€Dˆ-˜å	ŒÕ(Ñ	)Ô	)ð Ið IØ×Ò˜S¥,½-ÐÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið Ir±   c           
      ó¶   — g | ]V\  }}}t          |j        j        t          ¦  «        °%||t          t	          ||j        j        ¦  «        d |j        j        iŽf‘ŒWS )r�   )Ú
isinstancer<   r.   r"   r#   r�   ©r   r3   rM   rF   s       r   r   r   W  s|   € ð ð ð ñ 	!ˆˆm˜SÝ�mÔ)Ô/µÑ;Ô;ðàØÝÝ˜3 Ô 3Ô 9Ñ:Ô:ð	
àÔ%Ô+ð	
ð 	
ððð ð r   c                 ó^   — g | ]*\  }}}t          |j        j        t          ¦  «        ¯%|||f‘Œ+S r   )r·   r<   r.   r¸   s       r   r   r   i  sQ   € ð ð ð ñ 	!ˆˆm˜SÝ�-Ô%Ô+­YÑ7Ô7ðàØØððð ð r   c                 ó¸   — | \  }}t          j        t          ¦  «        5  |                     |t          t
          ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rH   )rC   rz   r    rK   rL   r$   r‡   s      r   Útest_fuzzed_string_signaturesr»   t  s³   € ð  Ñ€M�3å	ŒÕ(Ñ	)Ô	)ð Lð LØ×Ò˜S¥,Õ:JÐÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð Lð Lr}   r   )QÚ
__future__r   r   r0   r   ÚImportErrorÚ	functoolsr   rC   ÚsysÚhypothesis.strategiesÚ
strategiesrZ   Ú
hypothesisr   r   r   r   r   Úkeysr   r    Úutilr!   r"   r#   r$   r%   r&   r'   r¯   r(   r)   r*   r+   r,   r-   Úellipticcurver.   rL   Úhash_and_sizeÚargvrh   Úsortedr<   Úhash_algÚgenerater1   ÚskÚappendr\   rM   ÚsignÚmarkÚparametrizerO   Ú	compositero   rˆ   Úversion_inforr   Údata_too_largeÚfilter_too_muchÚtoo_slowÚdictÚslow_paramsr|   r…   r‰   rŽ   r“   r•   r˜   rŸ   r¬   r[   r°   re   rµ   Úkeys_and_string_sigsr»   r   r   r   ú<module>rØ      sZ  ðØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à €€€ð
Ø,Ð,Ð,Ð,Ð,Ð,Ð,øØð ð ð ðð ð ÐÐÐðøøøðð à!ðñ ô Ð ð
 Ð Ð Ð Ð Ð Ø €€€Ø 
€
€
€
Ø "Ð "Ð "Ð "Ð "Ð "Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $ð $€Ø Iðð Ø6Jðñ ô €ð&ð
 ˆsŒxÐÐØ˜Ð#€Fð €Ø Ið ˆV�FÐ 3Ð 3Ð4Ñ4Ô4ð 
ð 
€Eðð à ˜& °N°NÐCÑCÔCðñ ô ð 
ð 
ˆð
 !ˆZÔ Ø˜G˜G G¤K°Ñ:Ô:ð
ñ 
ô 
ˆð 	×Òà× Ò  ¨Ñ1Ô1ØÔ Ø—’˜°�Ñ>Ô>ðñ	
ô 	
ð 	
ð 	
ð
ð& „×ÒØØGÐG¸ÐGÑGÔGñô ðð ñ	ô ðð „ð0ð 0ñ „ð0ðf 
€àÔ�vÒÐØ&Ð&Ð&Ð&Ð&Ð&ð €Fˆ:ÑàÔ"ØÔ#ØÔð'€FÐ"Ñ#ð
 ˆsŒxÐÐØ€Fˆ>Ñàˆd�6‰lŒl€ØˆsŒxÐÐØ"#€K�ÑÐà"$€K�Ñð 
€ÐÐˆKÐÐØ€€}€}�]Ñ#Ô#Ñ$Ô$ðIð Iñ %Ô$ñ ÔðIð „ðð ñ „ððB 
€ÐÐˆKÐÐØ€Ð$Ð$Ñ&Ô&Ñ'Ô'ðIð Iñ (Ô'ñ ÔðIðCð Cð Cð „ð*ð *ñ „ð*ð Fð Fð Fð ð  ð  ð „ð,ð ,ñ „ð,ðð ð ð: 
€ÐÐˆKÐÐØ€€€r„�}Ñ%Ô% v v¡x¤xÑ0Ô0ðIð Iñ 1Ô0ñ ÔðIð 
€ÐÐˆKÐÐØ€€€r„�}Ñ%Ô% y r¤y¸'Ð'BÑ'BÔ'BÑCÔCØ€Ø�!Ô�o�o n n°QÑ&7Ô&7¸¸ÈÑ9JÔ9JÑKÔKñô ð 	€Ø�!ÔØ€O�N�N 1Ñ%Ô% ~ ~°aÑ'8Ô'8Ñ9Ô9¸GÑCñô ð 	€ˆ�qÔ	˜?˜?¨^¨^¸AÑ->Ô->Ð,?À!Ñ,CÐDÑEÔEðIð Iñ FÔEñ	ô ñô ñ DÔCñ ÔðIðð ð %2ðñ ô Ð ðð ð ð ð %2ðñ ô ñ Ð ð 
€ÐÐˆKÐÐØ€€}€}Ð)Ñ*Ô*Ñ+Ô+ðLð Lñ ,Ô+ñ ÔðLð Lð Ls   Ž •	! !