
    xh
                         d dl mZ d dlmZ  G d d          Zd dD             Zd Zd Z ed	d
dddddg d          Z eddddddddg d	  	        Z	e	Z
 ee            ee	           dS )   )Math)Pointc                   (    e Zd ZddZd Zd Zd ZdS )CurveFpNc
                     || _         || _        || _        || _        t	          ||          | _        || _        |	| _        || _        d S N)	ABPNr   GnamenistNameoid)
selfr	   r
   r   r   GxGyr   r   r   s
             F/var/www/html/what/lib/python3.11/site-packages/ellipticcurve/curve.py__init__zCurveFp.__init__   sF    r2	     c                     d|j         cxk    r| j        dz
  k    sn dS d|j        cxk    r| j        dz
  k    sn dS |j        dz  |j         dz  | j        |j         z  z   | j        z   z
  | j        z  dk    rdS dS )z{
        Verify if the point `p` is on the curve

        :param p: Point p = Point(x, y)
        :return: boolean
            r   F      T)xr   yr	   r
   )r   ps     r   containszCurveFp.contains   s     AC%%%%46A:%%%%5AC%%%%46A:%%%%5CFac1ftv|+df45?1DD5tr   c                 <    dt          d| j        z            z   dz  S )Nr   z%xr   )lenr   )r   s    r   lengthzCurveFp.length%   s     Ctv&&&1,,r   c                     t          |d| j                  | j        |z  z   | j        z   | j        z  }t	          j        || j                  }||dz  dk    k    r
| j        |z
  }|S )Nr   r   r   )powr   r	   r
   r   modularSquareRoot)r   r   isEvenySquaredr   s        r   r   z	CurveFp.y(   se    1df%%
2TV;tvE"8TV44a!eqj!!
Ar   r   )__name__
__module____qualname__r   r   r!   r    r   r   r   r   
   sU             - - -    r   r   c                 8    i | ]}t          |j                  |S r*   )tupler   .0curves     r   
<dictcomp>r0   0   s$    888Eei  %888r   r*   c                 >    | t           t          | j                  <   d S r   )_curvesByOidr,   r   )r/   s    r   addr3   3   s    %*Luy!!"""r   c           
         | t           vrut          d                    d                    d | D                       d                    d t                                           D                                           t           |          S )NzCUnknown curve with oid {oid}; The following are registered: {names}.c                 ,    g | ]}t          |          S r*   )str)r.   numbers     r   
<listcomp>zgetByOid.<locals>.<listcomp>:   s    888&#f++888r   z, c                     g | ]	}|j         
S r*   )r   r-   s     r   r9   zgetByOid.<locals>.<listcomp>;   s    KKKEUZKKKr   )r   names)r2   	Exceptionformatjoinvalues)r   s    r   getByOidr@   7   s    
,]dd88C88899))KK\5H5H5J5JKKKLL e 
 
   	 r   	secp256k1r      l   /| l   AAl 3z~i9nW~ l   -lO96M:WZEuw>?3yl   T!v?B>bAP)("8p'UxI;m:H)r   r      r   
   )r   r	   r
   r   r   r   r   r   
prime256v1zP-256l   ?               @ l   K`Opq^cv
3,e<1U]>{|R*Zl   ?               @ l   Q%x+Ohbi+}s   @ l   B11e	%:f=K`wrH7gHK8hkl   Q~o]l+fUg+<)Z?8O?q!O)r   r   iH  i='  r   r   rB   )	r   r   r	   r
   r   r   r   r   r   N)mathr   pointr   r   r2   r3   r@   rA   rE   p256r*   r   r   <module>rI      s              # # # # # # # #L 98R888+ + +   G	HHHHII	 	 		 W	HHHHII###
 
 

  I Jr   