Ë
    íU.j4B  ã                   óº   — d dl Z d dl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 dlmZ  G d„ de«      Z G d„ d	e«      Z e«       Z G d
„ de«      Z G d„ de«      Zy)é    N)Úbytes_to_longÚlong_to_bytes)ÚVoidPointerÚnull_pointerÚSmartPointerÚc_size_tÚc_uint8_ptrÚc_ulonglong)ÚInteger)Úgetrandbitsc                   ó0   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zy
)ÚCurveIDé   é   é   é   é   é   é   é   é	   N)Ú__name__Ú
__module__Ú__qualname__ÚP192ÚP224ÚP256ÚP384ÚP521ÚED25519ÚED448Ú
CURVE25519ÚCURVE448© ó    úYC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\Crypto/PublicKey/_point.pyr   r      s/   „ Ø€DØ€DØ€DØ€DØ€DØ€GØ€EØ€JØ�Hr%   r   c                   óÌ   — e Zd Zi Z ej
                  «       Zg d¢Zg d¢Zg d¢Z	g d¢Z
g d¢ZddgZdd	gZg d
¢Zg d¢Zeez   e	z   e
z   ez   ez   ez   ez   ez   Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_Curves)Úp192z
NIST P-192zP-192Ú
prime192v1Ú	secp192r1Únistp192)Úp224z
NIST P-224zP-224Ú
prime224v1Ú	secp224r1Únistp224)Úp256z
NIST P-256zP-256Ú
prime256v1Ú	secp256r1Únistp256)Úp384z
NIST P-384zP-384Ú
prime384v1Ú	secp384r1Únistp384)Úp521z
NIST P-521zP-521Ú
prime521v1Ú	secp521r1Únistp521Úed25519ÚEd25519Úed448ÚEd448)Ú
curve25519Ú
Curve25519ÚX25519)Úcurve448ÚCurve448ÚX448c                 ó   — || j                   v S ©N©Ú	all_names)ÚselfÚitems     r&   Ú__contains__z_Curves.__contains__1   s   € Ø�t—~‘~Ð%Ð%r%   c                 ó   — | j                   S rH   rI   ©rK   s    r&   Ú__dir__z_Curves.__dir__4   s   € Ø�~‰~Ðr%   c                 ó^  — || j                   v rfddlm} |j                  «       }t        j
                  |_        | j                  j                  t        j                  | j                   |«      «       �n«|| j                  v rfddlm} |j                  «       }t        j                  |_        | j                  j                  t        j                  | j                  |«      «       �n7|| j                  v rfddlm} |j                  «       }t        j                   |_        | j                  j                  t        j                  | j                  |«      «       �nÃ|| j"                  v rfddlm} |j%                  «       }t        j&                  |_        | j                  j                  t        j                  | j"                  |«      «       �nO|| j(                  v rfddlm} |j+                  «       }t        j,                  |_        | j                  j                  t        j                  | j(                  |«      «       �nÛ|| j.                  v rfddlm} |j3                  «       }	t        j4                  |	_        | j                  j                  t        j                  | j.                  |	«      «       �ng|| j6                  v reddlm} |j9                  «       }
t        j:                  |
_        | j                  j                  t        j                  | j6                  |
«      «       nô|| j<                  v reddlm} |jA                  «       }t        jB                  |_        | j                  j                  t        j                  | j<                  |«      «       n�|| jD                  v reddlm} |jG                  «       }t        jH                  |_        | j                  j                  t        j                  | jD                  |«      «       ntK        d|z  «      ‚| j                  |   S )Nr   )Ú	_nist_ecc)Ú_edwards)Ú_montgomeryzUnsupported curve '%s')&Ú
p192_namesÚ rR   Ú
p192_curver   r   ÚidÚcurvesÚupdateÚdictÚfromkeysÚ
p224_namesÚ
p224_curver   Ú
p256_namesÚ
p256_curver   Ú
p384_namesÚ
p384_curver   Ú
p521_namesÚ
p521_curver   Úed25519_namesrS   Úed25519_curver    Úed448_namesÚed448_curver!   Úcurve25519_namesrT   Úcurve25519_curver"   Úcurve448_namesÚcurve448_curver#   Ú
ValueError)rK   ÚnamerR   r)   r-   r1   r5   r9   rS   r=   r?   rT   rA   rD   s                 r&   Úloadz_Curves.load7   sÇ  € Ø�4—?‘?Ñ"Ý#Ø×'Ñ'Ó)ˆDÜ—l‘lˆDŒGØ�K‰K×ÑœtŸ}™}¨T¯_©_¸dÓCÖDØ�T—_‘_Ñ$Ý#Ø×'Ñ'Ó)ˆDÜ—l‘lˆDŒGØ�K‰K×ÑœtŸ}™}¨T¯_©_¸dÓCÖDØ�T—_‘_Ñ$Ý#Ø×'Ñ'Ó)ˆDÜ—l‘lˆDŒGØ�K‰K×ÑœtŸ}™}¨T¯_©_¸dÓCÖDØ�T—_‘_Ñ$Ý#Ø×'Ñ'Ó)ˆDÜ—l‘lˆDŒGØ�K‰K×ÑœtŸ}™}¨T¯_©_¸dÓCÖDØ�T—_‘_Ñ$Ý#Ø×'Ñ'Ó)ˆDÜ—l‘lˆDŒGØ�K‰K×ÑœtŸ}™}¨T¯_©_¸dÓCÖDØ�T×'Ñ'Ñ'Ý"Ø×,Ñ,Ó.ˆGÜ Ÿ™ˆGŒJØ�K‰K×ÑœtŸ}™}¨T×-?Ñ-?ÀÓIÖJØ�T×%Ñ%Ñ%Ý"Ø×(Ñ(Ó*ˆEÜ—}‘}ˆEŒHØ�K‰K×ÑœtŸ}™}¨T×-=Ñ-=¸uÓEÕFØ�T×*Ñ*Ñ*Ý%Ø$×5Ñ5Ó7ˆJÜ#×.Ñ.ˆJŒMØ�K‰K×ÑœtŸ}™}¨T×-BÑ-BÀJÓOÕPØ�T×(Ñ(Ñ(Ý%Ø"×1Ñ1Ó3ˆHÜ!×*Ñ*ˆHŒKØ�K‰K×ÑœtŸ}™}¨T×-@Ñ-@À(ÓKÕLäÐ5¸Ñ<Ó=Ð=Ø�{‰{˜4Ñ Ð r%   c                 óf  — | j                   5  | j                  j                  |«      }|€ñ| j                  |«      }|| j                  v s|| j
                  v rt        |j                  |«      |_        n&t        |j                  |j                  |«      |_        |j                  t        j                  t        j                  fv |_        |j                  t        j                   t        j"                  fv |_        |j                  xs |j$                   |_        d d d «       |S # 1 sw Y   S xY wrH   )Úcurves_lockrY   Úgetro   ri   rk   Ú	EccXPointÚGxÚGÚEccPointÚGyrX   r   r    r!   Ú
is_edwardsr"   r#   Úis_montgomeryÚis_weierstrass)rK   rn   Úcurves      r&   Ú__getitem__z_Curves.__getitem__i   s÷   € Ø×ÓØ—K‘K—O‘O DÓ)ˆEØˆ}ØŸ	™	 $›�Ø˜4×0Ñ0Ñ0°D¸D×<OÑ<OÑ4OÜ'¨¯©°$Ó7�E•Gä& u§x¡x°·±¸4Ó@�E”GØ#(§8¡8´·±ÄÇÁÐ/OÐ#O�Ô Ø&+§h¡h´7×3EÑ3EÜ3:×3CÑ3Cð3Eð 'E�Ô#à,1×,<Ñ,<ò -@Ø,1×,?Ñ,?ð(A�Ô$÷ ð ˆ÷ ð ˆús   �DD&Ä&D0c                 ób   — | j                   D ]  }| |   }Œ	 | j                  j                  «       S rH   )rJ   rY   Úitems)rK   rn   Ú_s      r&   r~   z_Curves.itemsy   s,   € à—N”NˆDØ�T‘
‰Að #à�{‰{× Ñ Ó"Ð"r%   N)r   r   r   rY   Ú	threadingÚRLockrq   rU   r]   r_   ra   rc   re   rg   ri   rk   rJ   rM   rP   ro   r|   r~   r$   r%   r&   r(   r(      s«   „ à€FØ!�)—/‘/Ó#€Kò€Jò€Jò€Jò€Jò€Jà 	Ð*€MØ˜GÐ$€KÚ=ÐÚ5€Nà˜ZÑ'¨*Ñ4°zÑAÀJÑNØñØ#ñ$Ø&6ñ7Ø9GñH€Iò&òò0!òdó #r%   r(   c                   ó¢   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)rv   aÁ  A class to model a point on an Elliptic Curve.

    The class supports operators for:

    * Adding two points: ``R = S + T``
    * In-place addition: ``S += T``
    * Negating a point: ``R = -T``
    * Comparing two points: ``if S == T: ...`` or ``if S != T: ...``
    * Multiplying a point by a scalar: ``R = S*k``
    * In-place multiplication by a scalar: ``T *= k``

    :ivar curve: The **canonical** name of the curve as defined in the `ECC table`_.
    :vartype curve: string

    :ivar x: The affine X-coordinate of the ECC point
    :vartype x: integer

    :ivar y: The affine Y-coordinate of the ECC point
    :vartype y: integer

    :ivar xy: The tuple with affine X- and Y- coordinates
    c                 óÄ  — 	 t         |   | _        | j                  j
                  | _        | j                  j                  t        j                  k(  rt        d«      ‚| j                  «       }t        ||«      }t        ||«      }t        |«      |k7  st        |«      |k7  rt        d«      ‚| j                  j                  j                  }| j                  j                  j                  }t!        «       | _        	 | j                  j$                  j'                  «       }	 || j"                  j-                  «       t/        |«      t/        |«      t1        |«      |	«      }
|
r|
dk(  rt        d«      ‚t        d|
z  «      ‚t3        | j"                  j'                  «       |«      | _        y # t        $ r t        dt	        |«      z  «      ‚w xY w# t(        $ r	 t*        }	Y Œ¾w xY w)NúUnknown curve name %sz)EccPoint cannot be created for Curve25519úIncorrect coordinate lengthé   ú)The EC point does not belong to the curveú(Error %d while instantiating an EC point)Ú_curvesÚ_curveÚKeyErrorrm   ÚstrÚ	canonicalr{   rX   r   r"   Úsize_in_bytesr   ÚlenÚrawlibÚ	new_pointÚ
free_pointr   Ú_pointÚcontextrr   ÚAttributeErrorr   Ú
address_ofr	   r   r   )rK   ÚxÚyr{   Úmodulus_bytesÚxbÚybr‘   Ú	free_funcr”   Úresults              r&   Ú__init__zEccPoint.__init__›   s—  € ð	CÜ! %™.ˆDŒKð —[‘[×*Ñ*ˆŒ
à�;‰;�>‰>œW×/Ñ/Ò/ÜÐHÓIÐIà×*Ñ*Ó,ˆä˜1˜mÓ,ˆÜ˜1˜mÓ,ˆÜˆr‹7�mÒ#¤s¨2£w°-Ò'?ÜÐ:Ó;Ð;à—K‘K×&Ñ&×0Ñ0ˆ	Ø—K‘K×&Ñ&×1Ñ1ˆ	ä!“mˆŒð	#Ø—k‘k×)Ñ)×-Ñ-Ó/ˆGñ ˜4Ÿ;™;×1Ñ1Ó3Ü& r›?Ü& r›?Ü# MÓ2Ø"ó	$ˆñ Ø˜Š|Ü Ð!LÓMÐMÜÐGÈ&ÑPÓQÐQô # 4§;¡;§?¡?Ó#4°iÓ@ˆ�øôG ò 	CÜÐ4´s¸5³zÑAÓBÐBð	Cûô( ò 	#Ü"ŠGð	#ús   ‚F) Ã<$G Æ)!G
ÇGÇGc                 óˆ  — | j                   j                  j                  }| j                   j                  j                  }t	        «       | _         || j
                  j                  «       |j
                  j                  «       «      }|rt        d|z  «      ‚t        | j
                  j                  «       |«      | _        | S ©Nz"Error %d while cloning an EC point©
rŠ   r�   Úcloner’   r   r“   r–   rr   rm   r   ©rK   Úpointr¢   rœ   r�   s        r&   ÚsetzEccPoint.setÄ   s’   € Ø—‘×"Ñ"×(Ñ(ˆØ—K‘K×&Ñ&×1Ñ1ˆ	ä!“mˆŒÙ�t—{‘{×-Ñ-Ó/Ø—|‘|×'Ñ'Ó)ó+ˆñ ÜÐAÀFÑJÓKÐKä" 4§;¡;§?¡?Ó#4°iÓ@ˆŒØˆr%   c                 óÜ   — t        |t        «      sy| j                  j                  j                  }d || j
                  j                  «       |j
                  j                  «       «      k(  S ©NFr   )Ú
isinstancerv   rŠ   r�   Úcmpr“   rr   )rK   r¤   Úcmp_funcs      r&   Ú__eq__zEccPoint.__eq__Ò   sN   € Ü˜%¤Ô*Øà—;‘;×%Ñ%×)Ñ)ˆØ‘H˜TŸ[™[Ÿ_™_Ó.°·±×0@Ñ0@Ó0BÓCÑCÐCr%   c                 ó   — | |k(   S rH   r$   )rK   r¤   s     r&   Ú__ne__zEccPoint.__ne__Ú   s   € Ø˜5‘=Ð Ð r%   c                 óÆ   — | j                   j                  j                  }| j                  «       } ||j                  j                  «       «      }|rt        d|z  «      ‚|S )Nz$Error %d while inverting an EC point)rŠ   r�   ÚnegÚcopyr“   rr   rm   )rK   Úneg_funcÚnpr�   s       r&   Ú__neg__zEccPoint.__neg__Ý   sO   € Ø—;‘;×%Ñ%×)Ñ)ˆØ�Y‰Y‹[ˆÙ˜"Ÿ)™)Ÿ-™-›/Ó*ˆÙÜÐCÀfÑLÓMÐMØˆ	r%   c                 óR   — | j                   \  }}t        ||| j                  «      }|S ©zReturn a copy of this point.)Úxyrv   r{   )rK   r—   r˜   r²   s       r&   r°   zEccPoint.copyå   s&   € à�w‰w‰ˆˆ1Ü�a˜˜DŸJ™JÓ'ˆØˆ	r%   c                 ój   — | j                   j                  r| j                  dk(  S | j                  dk(  S )ú,``True`` if this is the *point-at-infinity*.r   )r   r   )rŠ   rx   r—   r¶   rO   s    r&   Úis_point_at_infinityzEccPoint.is_point_at_infinityë   s.   € ð �;‰;×!Ò!Ø—6‘6˜Q‘;Ðà—7‘7˜fÑ$Ð$r%   c                 óŠ   — | j                   j                  rt        dd| j                  «      S t        dd| j                  «      S )ú-Return the *point-at-infinity* for the curve.r   r   )rŠ   rx   rv   r{   rO   s    r&   Úpoint_at_infinityzEccPoint.point_at_infinityó   s7   € ð �;‰;×!Ò!Ü˜A˜q $§*¡*Ó-Ð-ä˜A˜q $§*¡*Ó-Ð-r%   c                 ó    — | j                   d   S )Nr   ©r¶   rO   s    r&   r—   z
EccPoint.xû   ó   € à�w‰w�q‰zÐr%   c                 ó    — | j                   d   S )Nr   r¾   rO   s    r&   r˜   z
EccPoint.yÿ   r¿   r%   c                 óz  — | j                  «       }t        |«      }t        |«      }| j                  j                  j                  } |t        |«      t        |«      t        |«      | j                  j                  «       «      }|rt        d|z  «      ‚t        t        |«      «      t        t        |«      «      fS )Nz#Error %d while encoding an EC point)rŽ   Ú	bytearrayrŠ   r�   Úget_xyr	   r   r“   rr   rm   r   r   )rK   r™   rš   r›   rÃ   r�   s         r&   r¶   zEccPoint.xy  s›   € à×*Ñ*Ó,ˆÜ�}Ó%ˆÜ�}Ó%ˆØ—‘×#Ñ#×*Ñ*ˆÙœ B›Ü# B›Ü  Ó/ØŸ™Ÿ™Ó)ó+ˆñ ÜÐBÀVÑKÓLÐLäœ bÓ)Ó*¬G´MÀ"Ó4EÓ,FÐGÐGr%   c                 ó.   — | j                  «       dz   dz  S ©z"Size of each coordinate, in bytes.r   r   ©Úsize_in_bitsrO   s    r&   rŽ   zEccPoint.size_in_bytes  ó   € à×!Ñ!Ó# aÑ'¨AÑ-Ð-r%   c                 ó.   — | j                   j                  S ©z!Size of each coordinate, in bits.©rŠ   Úmodulus_bitsrO   s    r&   rÇ   zEccPoint.size_in_bits  ó   € à�{‰{×'Ñ'Ð'r%   c                 ó¦   — | j                   j                  j                  } || j                  j	                  «       «      }|rt        d|z  «      ‚| S )zuDouble this point (in-place operation).

        Returns:
            This same object (to enable chaining).
        z#Error %d while doubling an EC point)rŠ   r�   Údoubler“   rr   rm   )rK   Údouble_funcr�   s      r&   rÏ   zEccPoint.double  sG   € ð —k‘k×(Ñ(×/Ñ/ˆÙ˜TŸ[™[Ÿ_™_Ó.Ó/ˆÙÜÐBÀVÑKÓLÐLØˆr%   c                 óø   — | j                   j                  j                  } || j                  j	                  «       |j                  j	                  «       «      }|r|dk(  rt        d«      ‚t        d|z  «      ‚| S )zAdd a second point to this oneé   z#EC points are not on the same curvez#Error %d while adding two EC points)rŠ   r�   Úaddr“   rr   rm   )rK   r¤   Úadd_funcr�   s       r&   Ú__iadd__zEccPoint.__iadd__'  si   € ð —;‘;×%Ñ%×)Ñ)ˆÙ˜$Ÿ+™+Ÿ/™/Ó+¨U¯\©\×-=Ñ-=Ó-?Ó@ˆÙØ˜Š|Ü Ð!FÓGÐGÜÐBÀVÑKÓLÐLØˆr%   c                 ó0   — | j                  «       }||z  }|S )z8Return a new point, the addition of this one and another©r°   )rK   r¤   r²   s      r&   Ú__add__zEccPoint.__add__2  s   € ð �Y‰Y‹[ˆØ
ˆe‰ˆØˆ	r%   c           
      ó<  — | j                   j                  j                  }|dk  rt        d«      ‚t	        |«      } || j
                  j                  «       t        |«      t        t        |«      «      t        t        d«      «      «      }|rt        d|z  «      ‚| S ©zMultiply this point by a scalarr   z?Scalar multiplication is only defined for non-negative integersé@   z%Error %d during scalar multiplication©rŠ   r�   Úscalarrm   r   r“   rr   r	   r   r�   r
   r   ©rK   rÝ   Úscalar_funcÚsbr�   s        r&   Ú__imul__zEccPoint.__imul__9  ó‡   € ð —k‘k×(Ñ(×/Ñ/ˆØ�AŠ:ÜÐ^Ó_Ð_Ü˜6Ó"ˆÙ˜TŸ[™[Ÿ_™_Ó.Ü(¨›_Ü%¤c¨"£gÓ.Ü(¬°R«Ó9ó;ˆñ ÜÐDÀvÑMÓNÐNØˆr%   c                 ó0   — | j                  «       }||z  }|S ©z2Return a new point, the scalar product of this oner×   ©rK   rÝ   r²   s      r&   Ú__mul__zEccPoint.__mul__H  ó   € ð �Y‰Y‹[ˆØ
ˆf‰ˆØˆ	r%   c                 ó$   — | j                  |«      S rH   ©ræ   ©rK   Ú	left_hands     r&   Ú__rmul__zEccPoint.__rmul__O  ó   € Ø�|‰|˜IÓ&Ð&r%   N)r1   )r   r   r   Ú__doc__rž   r¥   r«   r­   r³   r°   r¹   r¼   Úpropertyr—   r˜   r¶   rŽ   rÇ   rÏ   rÕ   rØ   rá   ræ   rì   r$   r%   r&   rv   rv   ƒ   s˜   „ ñó.'AòRòDò!òòò%ò.ð ñó ðð ñó ðð ñHó ðHò.ò(òò	òòòó'r%   rv   c                   ób   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)rs   a°  A class to model a point on an Elliptic Curve,
    where only the X-coordinate is exposed.

    The class supports operators for:

    * Multiplying a point by a scalar: ``R = S*k``
    * In-place multiplication by a scalar: ``T *= k``

    :ivar curve: The **canonical** name of the curve as defined in the `ECC table`_.
    :vartype curve: string

    :ivar x: The affine X-coordinate of the ECC point
    :vartype x: integer
    c                 óÌ  — 	 t         |   | _        | j                  j
                  | _        | j                  j                  t        j                  t        j                  fvrt        d«      ‚| j                  j                  j                  }| j                  j                  j                  }t        «       | _        	 | j                  j                   j#                  «       }| j)                  «       }|€t&        }n.t+        t-        ||«      «      }t/        |«      |k7  rt        d«      ‚t        «       | _         || j                  j1                  «       |t3        |«      |«      }|dk(  rt        d«      ‚|rt        d|z  «      ‚t5        | j                  j#                  «       |«      | _        y # t        $ r t        dt	        |«      z  «      ‚w xY w# t$        $ r
 t&        }Y �Œw xY w)Nr„   z5EccXPoint can only be created for Curve25519/Curve448r…   r†   r‡   rˆ   )r‰   rŠ   r‹   rm   rŒ   r�   r{   rX   r   r"   r#   r�   r‘   r’   r   r“   r”   rr   r•   r   rŽ   r	   r   r�   r–   r   r   )	rK   r—   r{   r‘   rœ   r”   r™   rš   r�   s	            r&   rž   zEccXPoint.__init__c  s˜  € ð
	CÜ! %™.ˆDŒKð —[‘[×*Ñ*ˆŒ
à�;‰;�>‰>¤'×"4Ñ"4´g×6FÑ6FÐ!GÑGÜÐTÓUÐUà—K‘K×&Ñ&×0Ñ0ˆ	Ø—K‘K×&Ñ&×1Ñ1ˆ	ä!“mˆŒð	#Ø—k‘k×)Ñ)×-Ñ-Ó/ˆGð ×*Ñ*Ó,ˆàˆ9Ü‰Bäœ]¨1¨mÓ<Ó=ˆBÜ�2‹w˜-Ò'Ü Ð!>Ó?Ð?ä!“mˆŒÙ˜4Ÿ;™;×1Ñ1Ó3ØÜ# MÓ2Ø"ó$ˆð
 �RŠ<ÜÐHÓIÐIÙÜÐGÈ&ÑPÓQÐQô # 4§;¡;§?¡?Ó#4°iÓ@ˆ�øôM ò 	CÜÐ4´s¸5³zÑAÓBÐBð	Cûô ò 	#Ü"‹Gð	#ús   ‚F, Â<$G Æ,!GÇG#Ç"G#c                 óˆ  — | j                   j                  j                  }| j                   j                  j                  }t	        «       | _         || j
                  j                  «       |j
                  j                  «       «      }|rt        d|z  «      ‚t        | j
                  j                  «       |«      | _        | S r    r¡   r£   s        r&   r¥   zEccXPoint.set’  s�   € Ø—‘×"Ñ"×(Ñ(ˆØ—K‘K×&Ñ&×1Ñ1ˆ	ä!“mˆŒÙ�t—{‘{×-Ñ-Ó/Ø—|‘|×'Ñ'Ó)ó+ˆáÜÐAÀFÑJÓKÐKä" 4§;¡;§?¡?Ó#4°iÓ@ˆŒØˆr%   c                 óè   — t        |t        «      sy| j                  j                  j                  }| j
                  j                  «       }|j
                  j                  «       } |||«      }d|k(  S r§   )r¨   rs   rŠ   r�   r©   r“   rr   )rK   r¤   rª   Úp1Úp2Úress         r&   r«   zEccXPoint.__eq__Ÿ  s[   € Ü˜%¤Ô+Øà—;‘;×%Ñ%×)Ñ)ˆØ�[‰[�_‰_ÓˆØ�\‰\×ÑÓˆÙ�r˜2ÓˆØ�C‰xˆr%   c                 ó†   — 	 | j                   }t        || j                  «      S # t        $ r | j                  «       cY S w xY wrµ   )r—   rm   r¼   rs   r{   )rK   r—   s     r&   r°   zEccXPoint.copy©  sC   € ð	,Ø—‘ˆAô ˜˜DŸJ™JÓ'Ð'øô ò 	,Ø×)Ñ)Ó+Ò+ð	,ús   ‚$ ¤A ¿A c                 ó<   — 	 | j                   }y# t        $ r Y yw xY w)r¸   TF)r—   rm   )rK   r   s     r&   r¹   zEccXPoint.is_point_at_infinity²  s)   € ð	Ø—‘ˆAð øô ò 	Ùð	ús   ‚ �	šc                 ó.   — t        d| j                  «      S )r»   N)rs   r{   rO   s    r&   r¼   zEccXPoint.point_at_infinity»  s   € ô ˜˜tŸz™zÓ*Ð*r%   c                 óH  — | j                  «       }t        |«      }| j                  j                  j                  } |t        |«      t        |«      | j                  j                  «       «      }|dk(  rt        d«      ‚|rt        d|z  «      ‚t        t        |«      «      S )Né   z)No X coordinate for the point at infinityz'Error %d while getting X of an EC point)rŽ   rÂ   rŠ   r�   Úget_xr	   r   r“   rr   rm   r   r   )rK   r™   rš   rü   r�   s        r&   r—   zEccXPoint.xÀ  sŽ   € à×*Ñ*Ó,ˆÜ�}Ó%ˆØ—‘×"Ñ"×(Ñ(ˆÙ”{ 2“Ü Ó.Ø—{‘{—‘Ó(ó*ˆð �RŠ<ÜÐHÓIÐIÙÜÐFÈÑOÓPÐPÜ”} RÓ(Ó)Ð)r%   c                 ó.   — | j                  «       dz   dz  S rÅ   rÆ   rO   s    r&   rŽ   zEccXPoint.size_in_bytesÎ  rÈ   r%   c                 ó.   — | j                   j                  S rÊ   rË   rO   s    r&   rÇ   zEccXPoint.size_in_bitsÒ  rÍ   r%   c           
      ó<  — | j                   j                  j                  }|dk  rt        d«      ‚t	        |«      } || j
                  j                  «       t        |«      t        t        |«      «      t        t        d«      «      «      }|rt        d|z  «      ‚| S rÚ   rÜ   rÞ   s        r&   rá   zEccXPoint.__imul__Ö  râ   r%   c                 ó0   — | j                  «       }||z  }|S rä   r×   rå   s      r&   ræ   zEccXPoint.__mul__å  rç   r%   c                 ó$   — | j                  |«      S rH   ré   rê   s     r&   rì   zEccXPoint.__rmul__ì  rí   r%   N)r   r   r   rî   rž   r¥   r«   r°   r¹   r¼   rï   r—   rŽ   rÇ   rá   ræ   rì   r$   r%   r&   rs   rs   S  sT   „ ñò-Aò^òò(òò+ð
 ñ*ó ð*ò.ò(òòó'r%   rs   )r€   ÚCrypto.Util.numberr   r   ÚCrypto.Util._raw_apir   r   r   r   r	   r
   ÚCrypto.Math.Numbersr   ÚCrypto.Random.randomr   Úobjectr   r(   r‰   rv   rs   r$   r%   r&   Ú<module>r     s`   ðó ç ;÷/÷ /õ (Ý ,ô	ˆfô 	ôc#ˆfô c#ñL ‹)€ôM'ˆvô M'ô`Z'�õ Z'r%   