§
    qŠtjÍa  ã                   óî  — d dl mZ d dlZd dlmZ d dlmZmZm	Z	m
Z
 	 d dlZn# e$ r d dlZY nw xY wd dl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mZmZmZmZm Z  ddlm!Z! i Z"ej#        dk    rde"d	<    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dddfedddfedddfedddfedddfedddfed d!dfed"d#dfed$d%dfed&d'dfed(d)dfed*d+dfgZ)ej*         +                    d,e)¦  «        d-„ ¦   «         Z,e e-d.d/¦  «        d0d1d2d3dfe e-d4d/¦  «        d5d6d7d8dfe e-d9d/¦  «        d:d;d<d=dfe e-d>d/¦  «        d?d@dAdBdfe e-dCd/¦  «        dDdEdFdGdfe e-dHd/¦  «        dIdJdKdLdfe e-dMd/¦  «        dNdOdPdQdfe e-dRd/¦  «        dSdTdUdVdfe e-dWd/¦  «        dXdYdZd[dfe e-d\d/¦  «        d]d^d_d`dfe e-dad/¦  «        dbdcdddedfe e-dfd/¦  «        dgdhdidjdfe e-dkd/¦  «        dldmdndodfe e-dpd/¦  «        dqdrdsdtdfe e-dud/¦  «        dvdwdxdydfgZ.ej*         +                    dze.¦  «        d{„ ¦   «         Z/ej*         +                    dzd|„ e.D ¦   «         ¦  «        d}„ ¦   «         Z0ej1        d~„ ¦   «         Z2 e3e"¦  «        Z4dej5        v rde4d€<   nd�e4d€<    ed…i e4¤Ž e
ed‚ddf¦  «         e e2¦   «         ¦  «        dƒ„ ¦   «         ¦   «         ¦   «         Z6d„„ Z7dS )†é    )Úprint_functionN)ÚgivenÚsettingsÚnoteÚexampleé   )ÚPrivate_keyÚ
Public_keyÚ	SignatureÚgenerator_192Údigest_integerÚellipticcurveÚpoint_is_validÚgenerator_224Úgenerator_256Úgenerator_384Úgenerator_521Úgenerator_secp256k1Ú	curve_192ÚInvalidPointErrorÚcurve_112r2Úgenerator_112r2Úint_to_string)ÚPoint)é   é   iˆ  Údeadlinec                   óR   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
S )ÚTestP192FromX9_62zCheck test vectors from X9.62c                 ó`  — d| _         | j         t          z  | _        d| _        | j        t          z  | _        d| _        t          t          t          | j         z  ¦  «        | _        t          | j        | j         ¦  «        | _	        | j	         
                    | j        | j        ¦  «        | _        d S )Nl   ûuH=½.t¹.#",W…‰}á7?Ìj¨l   N/ôvZL²_ï~XóX‹Öw]o¦l   �X¡9²	†BWÄG®Z@G6|2¦)Údr   ÚQÚkÚRÚmsgr
   Úpubkr	   ÚprivkÚsignÚsig)Úclss    úN/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/ecdsa/test_ecdsa.pyÚ
setUpClasszTestP192FromX9_62.setUpClass+   s   € àIˆŒØ”�Ñ%ˆŒØJˆŒØ”�Ñ%ˆŒàBˆŒÝ�m­]¸S¼UÑ-BÑCÔCˆŒÝ ¤¨#¬%Ñ0Ô0ˆŒ	Ø”)—.’. ¤¨#¬%Ñ0Ô0ˆŒˆˆó    c                 óD   — | j                              ¦   «         dk    sJ ‚d S )Nl   ¥Z`uSÌG;ìR¹-]]0s¹¤k	+)r"   Úx©Úselfs    r+   Útest_point_multiplicationz+TestP192FromX9_62.test_point_multiplication7   s$   € ØŒv�xŠx‰zŒzÐOÒOÐOÐOÐOÐOÐOr-   c                 ó‚   — | j                              ¦   «         dk    sJ ‚| j                              ¦   «         dk    sJ ‚d S )Nì   ­~“nÃ&ùDJ,6'1˜a47�b?`‘…ì   5XŸáD’+8ÊnÑ#w÷}ûrÐOÏ	)r$   r/   Úyr0   s    r+   Útest_point_multiplication_2z-TestP192FromX9_62.test_point_multiplication_2:   s@   € ØŒv�xŠx‰zŒzÐOÒOÐOÐOÐOØŒv�xŠx‰zŒzÐOÒOÐOÐOÐOÐOÐOr-   c                 ó    — d}d}|t           z  || j        z  z   }|                     ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚d S )Nl   WTóYÚ>n+ô¨B¾tC¤*½Yÿqˆl   !¡M_J†T¶96wfF[,z=ƒùr4   r5   )r   r"   r/   r6   )r1   Úu1Úu2Útemps       r+   Útest_mult_and_additionz(TestP192FromX9_62.test_mult_and_addition>   s[   € ØGˆØGˆØ•MÑ! B¨¬¡KÑ/ˆØ�vŠv‰xŒxÐMÒMÐMÐMÐMØ�vŠv‰xŒxÐMÒMÐMÐMÐMÐMÐMr-   c                 óV   — | j         j        | j         j        }}|dk    sJ ‚|dk    sJ ‚d S )Nr4   l   †v;*ÈY<L u<†ñ+ð=<fž)r)   ÚrÚs)r1   r>   r?   s      r+   Útest_signaturez TestP192FromX9_62.test_signatureE   s=   € ØŒxŒz˜4œ8œ:ˆ1ˆØÐNÒNÐNÐNÐNØÐNÒNÐNÐNÐNÐNÐNr-   c                 óT   — | j                              | j        | j        ¦  «        sJ ‚d S ©N©r&   Úverifiesr%   r)   r0   s    r+   Útest_verificationz#TestP192FromX9_62.test_verificationJ   s*   € ØŒy×!Ò! $¤(¨D¬HÑ5Ô5Ð5Ð5Ð5Ð5Ð5r-   c                 óZ   — | j                              | j        dz
  | j        ¦  «        rJ ‚d S ©Nr   rC   r0   s    r+   Útest_rejectionz TestP192FromX9_62.test_rejectionM   s.   € Ø”9×%Ò% d¤h°¡l°D´HÑ=Ô=Ð=Ð=Ð=Ð=Ð=r-   c           	      ó&  — t          t          t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         ¦  «        | j        j        ¦  «        }| 	                    | j
        | j        ¦  «        sJ ‚d S rB   )r
   r   r   Úcurver/   r6   Úorderr&   ÚpointrD   r%   r)   )r1   r&   s     r+   Ú$test_verification_with_regular_pointz6TestP192FromX9_62.test_verification_with_regular_pointP   s{   € ÝÝÝÔ#Ñ%Ô%Ý”Ñ!Ô!Ý”Ñ!Ô!ÝÔ#Ñ%Ô%ñ	ô ð ŒIŒOñ
ô 
ˆð �}Š}˜TœX t¤xÑ0Ô0Ð0Ð0Ð0Ð0Ð0r-   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr,   r2   r7   r<   r@   rE   rH   rM   © r-   r+   r   r   (   s¨   € € € € € Ø'Ð'àð	1ð 	1ñ „[ð	1ðPð Pð PðPð Pð PðNð Nð NðOð Oð Oð
6ð 6ð 6ð>ð >ð >ð1ð 1ð 1ð 1ð 1r-   r   c                   óP   — 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S )ÚTestPublicKeyc                 óØ   — t           }d}d}t          j        |                     ¦   «         ||¦  «        }t	          ||¦  «        }t	          ||¦  «        }|                      ||¦  «         d S ©Nì   öy2HþK�@– @fj¼¥ 6bkXì   #(z¶>Êf^UT¿!]ÿñiã&€)r   r   r   rJ   r
   ÚassertEqual)r1   Úgenr/   r6   rL   Úpub_key1Úpub_key2s          r+   Útest_equality_public_keysz'TestPublicKey.test_equality_public_keys_   sg   € ÝˆØ>ˆØ>ˆÝÔ# C§I¢I¡K¤K°°AÑ6Ô6ˆÝ˜c 5Ñ)Ô)ˆÝ˜c 5Ñ)Ô)ˆØ×Ò˜ 8Ñ,Ô,Ð,Ð,Ð,r-   c                 ó0  — t           }d}d}t          j        |                     ¦   «         ||¦  «        }d}d}t          j        |                     ¦   «         ||¦  «        }t	          ||¦  «        }t	          ||¦  «        }	|                      ||	¦  «         d S )NrX   rY   ì   ]/CÊ{mµe¯@�M 3(ŠEôè¢ì   ¿
ÁUCz8ù"òOØ{üóqÏ&f0A´©r   r   r   rJ   r
   ÚassertNotEqual©
r1   r[   Úx1Úy1Úpoint1Úx2Úy2Úpoint2r\   r]   s
             r+   Útest_inequality_public_keyz(TestPublicKey.test_inequality_public_keyh   s�   € ÝˆØ?ˆØ?ˆÝÔ$ S§Y¢Y¡[¤[°"°bÑ9Ô9ˆà?ˆØ?ˆÝÔ$ S§Y¢Y¡[¤[°"°bÑ9Ô9ˆå˜c 6Ñ*Ô*ˆÝ˜c 6Ñ*Ô*ˆØ×Ò˜H hÑ/Ô/Ð/Ð/Ð/r-   c                 ó8  — t           }d}d}t          j        |                     ¦   «         ||¦  «        }d}d}t          j        t	          j        ¦   «         ||¦  «        }t          ||¦  «        }t          t          |¦  «        }	|                      ||	¦  «         d S )NrX   rY   l   fiU1)LDü8mè
9 l   }s4<(F^zzjÑ\ )r   r   r   rJ   r   r
   rc   rd   s
             r+   Ú test_inequality_different_curvesz.TestPublicKey.test_inequality_different_curvesv   sŽ   € ÝˆØ?ˆØ?ˆÝÔ$ S§Y¢Y¡[¤[°"°bÑ9Ô9ˆà+ˆØ+ˆÝÔ$¥_Ô%:Ñ%<Ô%<¸bÀ"ÑEÔEˆå˜c 6Ñ*Ô*ˆÝ�o¨vÑ6Ô6ˆØ×Ò˜H hÑ/Ô/Ð/Ð/Ð/r-   c                 ó¸   — t           }d}d}t          j        |                     ¦   «         ||¦  «        }t	          ||¦  «        }|                      |d ¦  «         d S rW   rb   )r1   r[   r/   r6   rL   Úpub_keys         r+   Ú*test_inequality_public_key_not_implementedz8TestPublicKey.test_inequality_public_key_not_implemented„   sX   € ÝˆØ>ˆØ>ˆÝÔ# C§I¢I¡K¤K°°AÑ6Ô6ˆÝ˜S %Ñ(Ô(ˆØ×Ò˜G TÑ*Ô*Ð*Ð*Ð*r-   c                 óÆ  — t          j        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         d¦  «        }d}d}t          j        |                     ¦   «         ||¦  «        }|                      t          ¦  «        5 }t          ||¦  «         d d d ¦  «         n# 1 swxY w Y   |  
                    dt          |j        ¦  «        ¦  «         d S )Nr   rX   rY   zGenerator point must have order)r   ÚPointJacobir   rJ   r/   r6   r   ÚassertRaisesr   r
   ÚassertInÚstrÚ	exception)r1   r[   r/   r6   rL   Úes         r+   Ú,test_public_key_with_generator_without_orderz:TestPublicKey.test_public_key_with_generator_without_orderŒ   sü   € ÝÔ'ÝÔÑ!Ô!¥=¤?Ñ#4Ô#4µm´oÑ6GÔ6GÈñ
ô 
ˆð ?ˆØ>ˆÝÔ# C§I¢I¡K¤K°°AÑ6Ô6ˆà×ÒÕ0Ñ1Ô1ð 	#°QÝ�s˜EÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	�ŠÐ7½¸Q¼[Ñ9IÔ9IÑJÔJÐJÐJÐJs   ÂB.Â.B2Â5B2c                 ót  — d}d}t          j        t          ||d¦  «        }|                      t          j        ||¦  «        ¦  «         |                      t          ¦  «        5 }t          t          |¦  «         d d d ¦  «         n# 1 swxY w Y   |  	                    dt          |j        ¦  «        ¦  «         d S )Nr   ì    k¶2¥x7|oq©_ r   zGenerator point order)r   rr   r   Ú
assertTrueÚcontains_pointrs   r   r
   r   rt   ru   rv   )r1   r/   r6   rL   rw   s        r+   Ú<test_public_point_on_curve_not_scalar_multiple_of_base_pointzJTestPublicKey.test_public_point_on_curve_not_scalar_multiple_of_base_pointš   sß   € ØˆØ*ˆåÔ)­+°q¸!¸QÑ?Ô?ˆà�Š�Ô2°1°aÑ8Ô8Ñ9Ô9Ð9à×ÒÕ0Ñ1Ô1ð 	/°QÝ•¨Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	�ŠÐ-­s°1´;Ñ/?Ô/?Ñ@Ô@Ð@Ð@Ð@s   Á#BÂB	ÂB	c                 ó`   — d}d}|                       t          t          ||¦  «        ¦  «         d S )Nr   rz   )ÚassertFalser   r   )r1   r/   r6   s      r+   Ú:test_point_is_valid_with_not_scalar_multiple_of_base_pointzHTestPublicKey.test_point_is_valid_with_not_scalar_multiple_of_base_point§   s2   € ØˆØ*ˆà×Ò�­¸¸AÑ>Ô>Ñ?Ô?Ð?Ð?Ð?r-   c                 ó  — t          j        t          ddd¦  «        }|                      t          ¦  «        5 }t          t          |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j	        ¦  «        ¦  «         d S )Néÿÿÿÿr   r   úThe public point has x or y©
r   rr   r   rs   r   r
   r   rt   ru   rv   ©r1   Úptrw   s      r+   Útest_invalid_point_x_negativez+TestPublicKey.test_invalid_point_x_negative°   s¶   € ÝÔ&¥y°"°a¸Ñ;Ô;ˆà×ÒÕ0Ñ1Ô1ð 	*°QÝ•} bÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	�ŠÐ3µS¸¼Ñ5EÔ5EÑFÔFÐFÐFÐFó   ·AÁAÁ Ac                 ó>  — t          j        t          t          j        ¦   «         dd¦  «        }|                      t
          ¦  «        5 }t          t          |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j
        ¦  «        ¦  «         d S ©Nr   r   rƒ   ©r   rr   r   Úprs   r   r
   r   rt   ru   rv   r…   s      r+   Útest_invalid_point_x_equal_pz*TestPublicKey.test_invalid_point_x_equal_p¸   s¼   € ÝÔ&¥yµ)´+±-´-ÀÀAÑFÔFˆà×ÒÕ0Ñ1Ô1ð 	*°QÝ•} bÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	�ŠÐ3µS¸¼Ñ5EÔ5EÑFÔFÐFÐFÐFó   ÁA*Á*A.Á1A.c                 ó  — t          j        t          ddd¦  «        }|                      t          ¦  «        5 }t          t          |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j	        ¦  «        ¦  «         d S )Nr   r‚   r   rƒ   r„   r…   s      r+   Útest_invalid_point_y_negativez+TestPublicKey.test_invalid_point_y_negativeÀ   s¶   € ÝÔ&¥y°!°R¸Ñ;Ô;ˆà×ÒÕ0Ñ1Ô1ð 	*°QÝ•} bÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	�ŠÐ3µS¸¼Ñ5EÔ5EÑFÔFÐFÐFÐFrˆ   c                 ó>  — t          j        t          dt          j        ¦   «         d¦  «        }|                      t
          ¦  «        5 }t          t          |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j
        ¦  «        ¦  «         d S rŠ   r‹   r…   s      r+   Útest_invalid_point_y_equal_pz*TestPublicKey.test_invalid_point_y_equal_pÈ   s¼   € ÝÔ&¥y°!µY´[±]´]ÀAÑFÔFˆà×ÒÕ0Ñ1Ô1ð 	*°QÝ•} bÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	�ŠÐ3µS¸¼Ñ5EÔ5EÑFÔFÐFÐFÐFrŽ   N)rN   rO   rP   r^   rk   rm   rp   rx   r}   r€   r‡   r�   r�   r’   rS   r-   r+   rU   rU   ^   sÐ   € € € € € ð-ð -ð -ð0ð 0ð 0ð0ð 0ð 0ð+ð +ð +ðKð Kð KðAð Að Að@ð @ð @ðGð Gð GðGð Gð GðGð Gð GðGð Gð Gð Gð Gr-   rU   c                   ó<   — e Zd Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestPublicKeyVerifiesc                 ó–   — t           }d}d}t          j        |                     ¦   «         ||¦  «        }t	          ||¦  «        | _        d S rW   ©r   r   r   rJ   r
   ro   ©r*   r[   r/   r6   rL   s        r+   r,   z TestPublicKeyVerifies.setUpClassÓ   sB   € åˆØ>ˆØ>ˆÝÔ# C§I¢I¡K¤K°°AÑ6Ô6ˆå   eÑ,Ô,ˆŒˆˆr-   c                 ó‚   — t          dd¦  «        }|                      | j                             d|¦  «        ¦  «         d S )Nr   r   ©r   r   ro   rD   ©r1   r)   s     r+   Útest_sig_with_r_zeroz*TestPublicKeyVerifies.test_sig_with_r_zeroÜ   ó;   € Ý˜˜1‰oŒoˆà×Ò˜œ×.Ò.¨q°#Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7r-   c                 ó¤   — t          t          j        ¦   «         d¦  «        }|                      | j                             d|¦  «        ¦  «         d S rG   ©r   r   rK   r   ro   rD   rš   s     r+   Útest_sig_with_r_orderz+TestPublicKeyVerifies.test_sig_with_r_orderá   sF   € Ý�Ô+Ñ-Ô-¨qÑ1Ô1ˆà×Ò˜œ×.Ò.¨q°#Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7r-   c                 ó‚   — t          dd¦  «        }|                      | j                             d|¦  «        ¦  «         d S )Nr   r   r™   rš   s     r+   Útest_sig_with_s_zeroz*TestPublicKeyVerifies.test_sig_with_s_zeroæ   rœ   r-   c                 ó¤   — t          dt          j        ¦   «         ¦  «        }|                      | j                             d|¦  «        ¦  «         d S rG   rž   rš   s     r+   Útest_sig_with_s_orderz+TestPublicKeyVerifies.test_sig_with_s_orderë   sF   € Ý˜�=Ô.Ñ0Ô0Ñ1Ô1ˆà×Ò˜œ×.Ò.¨q°#Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7r-   N)	rN   rO   rP   rR   r,   r›   rŸ   r¡   r£   rS   r-   r+   r”   r”   Ñ   si   € € € € € àð-ð -ñ „[ð-ð8ð 8ð 8ð
8ð 8ð 8ð
8ð 8ð 8ð
8ð 8ð 8ð 8ð 8r-   r”   c                   ó6   — e Zd Zed„ ¦   «         Zd„ Zd„ Zd„ ZdS )ÚTestPrivateKeyc                 ó–   — t           }d}d}t          j        |                     ¦   «         ||¦  «        }t	          ||¦  «        | _        d S rW   r–   r—   s        r+   r,   zTestPrivateKey.setUpClassò   sB   € åˆØ>ˆØ>ˆÝÔ# C§I¢I¡K¤K°°AÑ6Ô6ˆÝ   eÑ,Ô,ˆŒˆˆr-   c                 ó†   — t          | j        d¦  «        }t          | j        d¦  «        }|                      ||¦  «         d S ©Néd   )r	   ro   rZ   ©r1   Úpr_key1Úpr_key2s      r+   Útest_equality_private_keysz)TestPrivateKey.test_equality_private_keysú   s@   € Ý˜dœl¨CÑ0Ô0ˆÝ˜dœl¨CÑ0Ô0ˆØ×Ò˜ 'Ñ*Ô*Ð*Ð*Ð*r-   c                 ó†   — t          | j        d¦  «        }t          | j        d¦  «        }|                      ||¦  «         d S )Nr©   éÈ   ©r	   ro   rc   rª   s      r+   Útest_inequality_private_keysz+TestPrivateKey.test_inequality_private_keysÿ   s@   € Ý˜dœl¨CÑ0Ô0ˆÝ˜dœl¨CÑ0Ô0ˆØ×Ò˜G WÑ-Ô-Ð-Ð-Ð-r-   c                 ó\   — t          | j        d¦  «        }|                      |d ¦  «         d S r¨   r°   )r1   Úpr_keys     r+   Ú,test_inequality_private_keys_not_implementedz;TestPrivateKey.test_inequality_private_keys_not_implemented  s/   € Ý˜Tœ\¨3Ñ/Ô/ˆØ×Ò˜F DÑ)Ô)Ð)Ð)Ð)r-   N)rN   rO   rP   rR   r,   r­   r±   r´   rS   r-   r+   r¥   r¥   ñ   sZ   € € € € € Øð-ð -ñ „[ð-ð+ð +ð +ð
.ð .ð .ð
*ð *ð *ð *ð *r-   r¥   l   :HùJ`4w«wêqVXR¬}h
xhÖl   üMuCÜ	×E|dD30v[À6? LÄFl   ;G-^
lqkwdx.¨}ùjÓsØ q~òl   Û*vdF*MŠeÜ5R£N"©[œ®T]	l   ’'ž£q%_Úhá$z0W]uÿqÅ?÷l   öpáTp-Õ |q.c¶_À—bb"“`+qrX   rY   Tl   pZ¶)SS4grÏ7)<E_1�j`+ßl   N*yô?4 =‚n—tb/{ Rd~)"|	l   í\½,}fDßxê;¤#™�C7à�l   ¹wF;6ê*&hJ|(9r>¢n¦%r{r`   ra   l   ÚóFÆ>x.~³x‚:™U�I‘pïeÜl   5fô~pä3,ÕZ'o	æ˜>ðQql   /+ UÓg1	†0BÞ]¬D?}xœ5&l   ²[-L#rJª4dM“][$1r<B.<“l   CkÿcOG>FÐ"S@kT75ÞnÖ	l   ªW&®`Ï}¿
�#-'bgq™gD~G­l   ¼m+}ÅLLjÌTb`š-~({MeÎ#Fl   ög±0•H‰?h_ÆáO´�X÷¯k†
l   S" +Á6}=�%?T˜5Þ`¥&Yl   #)§T…!¦Mój°C:eã6j-¦ 	zgenerator,x,y,expectedc                 ó4   — t          | ||¦  «        |k    sJ ‚dS )z~
    `generator` defines the curve; is `(x, y)` a point on
    this curve? `expected` is True if the right answer is Yes.
    N)r   )Ú	generatorr/   r6   Úexpecteds       r+   Útest_point_validityr¸   V  s'   € õ ˜) Q¨Ñ*Ô*¨hÒ6Ð6Ð6Ð6Ð6Ð6r-   Á  0x84ce72aa8699df436059f052ac51b6398d2511e49631bcb7e71f89c499b9ee425dfbc13a5f6d408471b054f2655617cbbaf7937b7c80cd8865cf02c8487d30d2b0fbd8b2c4e102e16d828374bbc47b93852f212d5043c3ea720f086178ff798cc4f63f787b9c2e419efa033e7644ea7936f54462dc21a6c4580725f7f0e7d158é   l   ¬geC	û9|C¯0M9F	ËQªLÙ_�l   Äk)7Q2XZ~î
­S½}“‚l   )$|;6y3·q'Fe7ë�Høp�(,eMl   y$Ž=‹tYÈ,dY=ÉVì4•P]ìÁ  0x94bb5bacd5f8ea765810024db87f4224ad71362a3c28284b2b9f39fab86db12e8beb94aae899768229be8fdb6c4f12f28912bb604703a79ccff769c1607f5a91450f30ba0460d359d9126cbd6296be6d9c4bb96c0ee74cbb44197c207f6db326ab6f5a659113a9034e54be7b041ced9dcf6458d7fb9cbfb2744d999f7dfd63f4l   çzN(Ë ’i,q ARs`…2^%Ä4|ål   ·-5ýC®Y42UŒ[ËB]a´TÄ/Çl   ¯UÊg?n 3ua„	¨�!wPX0)(l   l`¯gxJ„Rä\¦8z%8É/ƒ
ÁOlVÁ  0xf6227a8eeb34afed1621dcc89a91d72ea212cb2f476839d9b4243c66877911b37b4ad6f4448792a7bbba76c63bdd63414b6facab7dc71c3396a73bd7ee14cdd41a659c61c99b779cecf07bc51ab391aa3252386242b9853ea7da67fd768d303f1b9b513d401565b6f1eb722dfdb96b519fe4f9bd5de67ae131e64b40e78c42ddl   ·<î~•aÅû>m.×'J%ÐqWzícl   6#Hl²6Ð;ógBPÎy3q^™X!l   ‘V$tl7!ZÊ{�^°EmT“uêl   	*
„}a˜2ÂnÛèyŠyJ!USYÁ  0x16b5f93afd0d02246f662761ed8e0dd9504681ed02a253006eb36736b563097ba39f81c8e1bce7a16c1339e345efabbc6baa3efb0612948ae51103382a8ee8bc448e3ef71e9f6f7a9676694831d7f5dd0db5446f179bcb737d4a526367a447bfe2c857521c7f40b6d7d7e01a180d92431fb0bbd29c04a0c420a57b3ed26ccd8al   +ƒF_7UK_·bÞ@É{{½~�Eo&Ñl   ÄÆR¦Hy¬kúQ$k¶ ¹�X1W<P?l   Á}Ì*Fp­`Åx)±kÅg<TJÁmßl    EÈ;¿yS*sÅþX{<ì!·(DrÁ  0x08a2024b61b79d260e3bb43ef15659aec89e5b560199bc82cf7c65c77d39192e03b9a895d766655105edd9188242b91fbde4167f7862d4ddd61e5d4ab55196683d4f13ceb90d87aea6e07eb50a874e33086c4a7cb0273a8e1c4408f4b846bceae1ebaac1b2b2ea851a9b09de322efe34cebe601653efd6ddc876ce8c2f2072fbl   (·IŒ2È=R-.L\S™dc7ñCw |tl   ÿ'¯<;zs=A93=ôQ3Kmd¢KÑoZl   –wš n- lÆdk4ñ
Ï7Xá5_wÏEP	l   °z—hMR?WZ†f`Ý){Gs†,ûoÁ  0x1843aba74b0789d4ac6b0b8923848023a644a7b70afa23b1191829bbe4397ce15b629bf21a8838298653ed0c19222b95fa4f7390d1b4c844d96e645537e0aae98afb5c0ac3bd0e4c37f8daaff25556c64e98c319c52687c904c4de7240a1cc55cd9756b7edaef184e6e23b385726e9ffcba8001b8f574987c1a3fedaaa83ca6dl   Ÿ!) q!¬qÕ?á"Í" 1j5AdµjPfl   †V‘2îPPzN=Eñ|#^ã-%X1a[N l   %sÁ8í`þIélÎ)šaMtý° '}+l   3V  zÁXC&,§?p½]L3±+4—
Á  0x5a478f4084ddd1a7fea038aa9732a822106385797d02311aeef4d0264f824f698df7a48cfb6b578cf3da416bc0799425bb491be5b5ecc37995b85b03420a98f2c4dc5c31a69a379e9e322fbe706bbcaf0f77175e05cbb4fa162e0da82010a278461e3e974d137bc746d1880d6eb02aa95216014b37480d84b87f717bb13f76e1l   |`­#;eÞ	$beJ)qÖr)3cl   ÁVl}öv;}uA¨(•gZHø$­ðO]ßl   ^l“hÁcE¼pRNóvw3ï¬l   P_O*Ñ@è B¶d>b;yËO>÷OTÁ  0xc598774259a058fa65212ac57eaa4f52240e629ef4c310722088292d1d4af6c39b49ce06ba77e4247b20637174d0bd67c9723feb57b5ead232b47ea452d5d7a089f17c00b8b6767e434a5e16c231ba0efa718a340bf41d67ea2d295812ff1b9277daacb8bc27b50ea5e6443bcf95ef4e9f5468fe78485236313d53d1c68f6ba2l   ª
†<ûGóksS}5F
@j:@c¸^‚
l   >/ùvMmêYÆ6É#©k¯?]xxvggl   UinL´NSrÍ/nwô·B ^‡A$IÒl   •˜ ×Ê'Æq_LƒTDrUAidJ…
Á  0xca98ed9db081a07b7557f24ced6c7b9891269a95d2026747add9e9eb80638a961cf9c71a1b9f2c29744180bd4c3d3db60f2243c5c0b7cc8a8d40a3f9a7fc910250f2187136ee6413ffc67f1a25e1c4c204fa9635312252ac0e0481d89b6d53808f0c496ba87631803f6c572c1f61fa049737fdacce4adff757afed4f05beb658l   /l$JLµ®¾õå'k]-XÓl   ìgsV,)[áâl¡6|#Þ+èj]6È¯l   buxr
+)	º;ZMZZ¢,ÙWÇ;_	l   ‰"Ï]|~œZ–TU?^v–È4£cþC\Á  0x31dd9a54c8338bea06b87eca813d555ad1850fac9742ef0bbe40dad400e10288acc9c11ea7dac79eb16378ebea9490e09536099f1b993e2653cd50240014c90a9c987f64545abc6a536b9bd2435eb5e911fdfde2f13be96ea36ad38df4ae9ea387b29cced599af777338af2794820c9cce43b51d2112380a35802ab7e396c97al   Jk5"³:ÍÑC||QØSÈr;1”6	l   9fJ;=#0ÑLÎ]`vBW$ ‘]c6idl   ;gŸ4ÆK-­$faR$ot‡‘-ŠZ£9l   õeX{o¾(…`ÛUèb& ‰]vWÁ  0xb2b94e4432267c92f9fdb9dc6040c95ffa477652761290d3c7de312283f6450d89cc4aabe748554dfb6056b2d8e99c7aeaad9cdddebdee9dbc099839562d9064e68e7bb5f3a6bba0749ca9a538181fc785553a4000785d73cc207922f63e8ce1112768cb1de7b673aed83a1e4a74592f1268d8e2a4e9e63d414b5d442bd0456dl   ïl/S>sJOEj,Ÿ)%,U¡J~Æl   ñb&�HÆq”V{,?%YTÍlS@Þ=#%l   >½àbà*¡jŸ61›gHÎèXf l   Ü2-^PÉÉ=f;B"^v[z Ù
Á  0x4366fcadf10d30d086911de30143da6f579527036937007b337f7282460eae5678b15cccda853193ea5fc4bc0a6b9d7a31128f27e1214988592827520b214eed5052f7775b750b0c6b15f145453ba3fee24a085d65287e10509eb5d5f602c440341376b95c24e5c4727d4b859bfe1483d20538acdd92c7997fa9c614f0f839d7l   Sgk"†Z{h7ìEû&q÷S¤?„dU	l    er&æSE/û·•,J^�pt$b l   h&¥~²AìJ gKl
-��	ð_kEõl   ™5‹pšq!0š9l™xB÷më^ÎbºI.Á  0x543f8af57d750e33aa8565e0cae92bfa7a1ff78833093421c2942cadf9986670a5ff3244c02a8225e790fbf30ea84c74720abf99cfd10d02d34377c3d3b41269bea763384f372bb786b5846f58932defa68023136cd571863b304886e95e52e7877f445b9364b3f06f3c28da12707673fecb4b8071de06b6e0a3c87da160cef3l   5X›y×n"Mzµ$YI)ñZ]Ð?l   kg":(VeFo/+p!e[Ül   ÿxt:â!lMä1öl)3|^{:y¬6âl   hÃ6nÔs(#lrI<÷-È9pTvÁ  0xd2e8454143ce281e609a9d748014dcebb9d0bc53adb02443a6aac2ffe6cb009f387c346ecb051791404f79e902ee333ad65e5c8cb38dc0d1d39a8dc90add5023572720e5b94b190d43dd0d7873397504c0c7aef2727e628eb6a74411f2e400c65670716cb4a815dc91cbbfeb7cfe8c929e93184c938af2c078584da045e8f8d1l   À%ü3 aoqÊQ{ÖFZg(ŸkönvTjl   Úxmî%<DifŽPjXNOa@Z^Æ l   #O�hŒÿ?7ÉHBÄ[qJžfÅ&ó0F
l   é/“BWde&b‡"Ej+NÖY"	x=!8Á  0x6660717144040f3e2f95a4e25b08a7079c702a8b29babad5a19a87654bc5c5afa261512a11b998a4fb36b5d8fe8bd942792ff0324b108120de86d63f65855e5461184fc96a0a8ffd2ce6d5dfb0230cbbdd98f8543e361b3205f5da3d500fdc8bac6db377d75ebef3cb8f4d1ff738071ad0938917889250b41dd1d98896ca06fbl   w|§F¨M <˜$ÿ?i&i_Þ6NzVÏl   "N€?”xVP3|xÇlÆ/M-ŒAdSôl   Á!˜Ç-¸ÚiŸuL
‰VÌw‘|kÍ3Û	l   ©crE;ÌX<�vÒ 
l®N`fma„	zgen,msg,qx,qy,r,s,expectedc                 ó  — t          | t          j        |                      ¦   «         ||¦  «        ¦  «        }t	          j        t          ¦  «        5 }t          |¦  «        }	ddd¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚d|d         j	        j
        d         v sJ ‚d|d         j	        j
        d         v sJ ‚d|d         j	        j
        d         v sJ ‚||                     |	t          ||¦  «        ¦  «        k    sJ ‚dS )zÁ
    `msg` = message, `qx` and `qy` represent the base point on
    elliptic curve of `gen`, `r` and `s` are the signature, and
    `expected` is True iff the signature is expected to be valid.Né   Úunusedr   r   r   )r
   r   r   rJ   ÚpytestÚwarnsÚDeprecationWarningr   ÚlenÚmessageÚargsrD   r   )
r[   r%   ÚqxÚqyr>   r?   r·   r&   rÍ   Úmsg_dgsts
             r+   Útest_signature_validityrÕ   R  s:  € õ �c�=Ô.¨s¯yªy©{¬{¸BÀÑCÔCÑDÔD€DÝ	ŒÕ(Ñ	)Ô	)ð '¨UÝ! #Ñ&Ô&ˆð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'åˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?Ø�u˜Q”xÔ'Ô,¨QÔ/Ð/Ð/Ð/Ð/Ø�u˜Q”xÔ'Ô,¨QÔ/Ð/Ð/Ð/Ð/Ø�u˜Q”xÔ'Ô,¨QÔ/Ð/Ð/Ð/Ð/Ø�t—}’} X­y¸¸A©¬Ñ?Ô?Ò?Ð?Ð?Ð?Ð?Ð?s   ÁA,Á,A0Á3A0c                 ó"   — g | ]}|d          ¯
|‘ŒS )é   rS   )Ú.0r/   s     r+   ú
<listcomp>rÙ   c  s!   € Ð"EÐ"EÐ"E¨ÀÀ!ÄÐ"E 1Ð"EÐ"EÐ"Er-   c           
      ó¬  — ~t          ||¦  «        }t          j        t          ¦  «        5 }t	          |¦  «        }	d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚d|d         j        j        d         v sJ ‚d|d         j        j        d         v sJ ‚d|d         j        j        d         v sJ ‚|                     |	| ¦  «        }
|
sJ ‚|
D ]B}|j	        }t          | ||                     ¦   «         |                     ¦   «         ||d¦  «         ŒCt          j        |                      ¦   «         ||¦  «        }d„ |
D ¦   «         }||v sJ ‚d S )NrÊ   rË   r   r   r   Tc                 ó   — g | ]	}|j         ‘Œ
S rS   )rL   )rØ   Úpks     r+   rÙ   z$test_pk_recovery.<locals>.<listcomp>y  s   € Ð%Ð%Ð%˜2ˆbŒhÐ%Ð%Ð%r-   )r   rÌ   rÍ   rÎ   r   rÏ   rÐ   rÑ   Úrecover_public_keysrL   rÕ   r/   r6   r   r   rJ   )r[   r%   r>   r?   rÒ   rÓ   r·   r(   rÍ   rÔ   ÚpksrÜ   ÚqÚ
original_qÚpointss                  r+   Útest_pk_recoveryrâ   b  s¤  € ð 	Ý�Q˜‰?Œ?€DÝ	ŒÕ(Ñ	)Ô	)ð '¨UÝ! #Ñ&Ô&ˆð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'åˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?Ø�u˜Q”xÔ'Ô,¨QÔ/Ð/Ð/Ð/Ð/Ø�u˜Q”xÔ'Ô,¨QÔ/Ð/Ð/Ð/Ð/Ø�u˜Q”xÔ'Ô,¨QÔ/Ð/Ð/Ð/Ð/Ø
×
"Ò
" 8¨SÑ
1Ô
1€Cà€J€Jˆ3ð ð Dð DˆØŒHˆÝ  S¨!¯#ª#©%¬%°·²±´¸¸1¸dÑCÔCÐCÐCõ Ô$ S§Y¢Y¡[¤[°"°bÑ9Ô9€JØ%Ð% Ð%Ñ%Ô%€FØ˜ÐÐÐÐÐÐs   «AÁAÁAc                 ó^  — t           t          t          t          t          t
          dœ} | t          j        t          | 	                    ¦   «         ¦  «        ¦  «        ¦  «        }t          d                     |¦  «        ¦  «         ||         }t          |                     ¦   «         ¦  «        dz
  } | t          j        d|¬¦  «        ¦  «        } | t          j        d|¬¦  «        ¦  «        } | t          j        d|¬¦  «        t          j        |dz	  |¬¦  «        z  ¦  «        }||||fS )z*Hypothesis strategy for test_sig_verify().)r   r   r   r   r   r   zGenerator used: {0}r   )Ú	min_valueÚ	max_value)r   r   r   r   r   r   ÚstÚsampled_fromÚsortedÚkeysr   ÚformatÚintrK   Úintegers)ÚdrawÚname_genÚnamer¶   rK   Úkeyr%   Únonces           r+   Úst_random_gen_key_msg_noncerò   }  s  € õ 'Ý&Ý&Ý2Ý&Ý&ðð €Hð ˆ4•”¥ x§}¢}¡¤Ñ 7Ô 7Ñ8Ô8Ñ9Ô9€DÝÐ	×	%Ò	% dÑ	+Ô	+Ñ,Ô,Ð,Ø˜”€IÝ�	—’Ñ!Ô!Ñ"Ô" QÑ&€Eà
ˆ$�rŒ{ Q°%Ð8Ñ8Ô8Ñ
9Ô
9€CØ
ˆ$�rŒ{ Q°%Ð8Ñ8Ô8Ñ
9Ô
9€CØˆDÝ
Œ˜a¨5Ð1Ñ1Ô1Ý
Œ+ ¨¡
°eÐ
<Ñ
<Ô
<ñ	=ñô €Eð �c˜3 Ð%Ð%r-   z--fastÚmax_examplesé
   é   c                 óì   — | \  }}}}t          |||z  ¦  «        }t          ||¦  «        }|                     ||¦  «        }|                     ||¦  «        sJ ‚|                     |dz
  |¦  «        rJ ‚dS )z�
    Check if signing and verification works for arbitrary messages and
    that signatures for other messages are rejected.
    r   N)r
   r	   r(   rD   )rÑ   r¶   Úsec_multr%   rñ   ÚpubkeyÚprivkeyÚ	signatures           r+   Útest_sig_verifyrû   �  s†   € ð '+Ñ#€Iˆx˜˜eå˜	 9¨xÑ#7Ñ8Ô8€FÝ˜& (Ñ+Ô+€Gà—’˜S %Ñ(Ô(€Ià�?Š?˜3 	Ñ*Ô*Ð*Ð*Ð*à�Š˜s Q™w¨	Ñ2Ô2Ð2Ð2Ð2Ð2Ð2r-   c                  óö   — t          j        t          ¦  «        5 } t          d¦  «        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t	          | ¦  «        dk    sJ ‚d| d         j        j        d         v sJ ‚d S )Nr   ó    r   rË   )rÌ   rÍ   rÎ   r   rÏ   rÐ   rÑ   )rÍ   s    r+   Útest_int_to_string_with_zerorþ   ±  s¼   € Ý	ŒÕ(Ñ	)Ô	)ð +¨UÝ˜QÑÔ 7Ò*Ð*Ð*Ð*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +õ ˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?Ø�u˜Q”xÔ'Ô,¨QÔ/Ð/Ð/Ð/Ð/Ð/Ð/s   š=½AÁArS   )8Ú
__future__r   ÚsysÚhypothesis.strategiesÚ
strategiesræ   Ú
hypothesisr   r   r   r   Ú	unittest2ÚunittestÚImportErrorrÌ   Úecdsar	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ÚHYP_SETTINGSÚversion_infoÚTestCaser   rU   r”   r¥   ÚP192_POINTSÚmarkÚparametrizer¸   rë   ÚCURVE_192_KATSrÕ   râ   Ú	compositerò   ÚdictÚSIG_VER_SETTINGSÚargvrû   rþ   rS   r-   r+   ú<module>r     sØ  ðØ %Ð %Ð %Ð %Ð %Ð %Ø 
€
€
€
Ø "Ð "Ð "Ð "Ð "Ð "Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ðØ Ð Ð Ð Ð øØð ð ð Ø€O€O€O€O€Oðøøøà €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& !Ð  Ð  Ð  Ð  Ð  ð €àÔ�fÒÐà#€L�Ñð31ð 31ð 31ð 31ð 31˜Ô)ñ 31ô 31ð 31ðlpGð pGð pGð pGð pG�HÔ%ñ pGô pGð pGðf8ð 8ð 8ð 8ð 8˜HÔ-ñ 8ô 8ð 8ð@*ð *ð *ð *ð *�XÔ&ñ *ô *ð *ð6 	Ø:Ø>Øð	ð 	Ø>Ø:Øð	ð 	Ø:Ø>Øð	ð 	Ø:Ø:Øð	ð 	Ø:Ø:Øð	ð 	Ø:Ø:Øð	ð 	Ø:Ø:Øð	ð 	Ø:Ø>Øð	ð 	Ø:Ø:Øð	ð 	Ø:Ø:Øð	ð 	Ø:Ø:Øð	ð 	Ø:Ø:Øð	ðGI€ðX „×ÒÐ1°;Ñ?Ô?ð7ð 7ñ @Ô?ð7ð 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	Øˆðð
 ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð" 	ØˆðKð ñ	
ô 	
ð 	;Ø:Ø:Ø:Øðð  	ØˆðKð ñ	
ô 	
ð 	;Ø:Ø:Ø:ØððAo€ðd „×ÒÐ5°~ÑFÔFð@ð @ñ GÔFð@ð „×ÒØ Ð"EÐ"E¨nÐ"EÑ"EÔ"Eñô ð ð  ñô ð ð0 „ð&ð &ñ „ð&ð0 �4˜Ñ%Ô%Ð ØˆsŒxÐÐØ'(Ð�^Ñ$Ð$à')Ð�^Ñ$ð 
€ÐÐÐÐÐØ€ˆ-˜˜A˜qÐ	!Ñ"Ô"Ø€Ð"Ð"Ñ$Ô$Ñ%Ô%ð3ð 3ñ &Ô%ñ #Ô"ñ Ôð3ð"0ð 0ð 0ð 0ð 0s   ž# £	/®/