
    xh                     d    d dl mZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
T  G d d	          Zd
S )    )sha256   )	Signature)Math)RandomInteger)numberFromByteString)*c                   B    e Zd Zeefd            Zeefd            ZdS )Ecdsac                 2    |t          |                                                    }t          |          }|j        }d\  }}}	|dk    s|dk    rt	          j        d|j        dz
            }
t          j        |j	        |
|j
        |j        |j                  }	|	j        |j        z  }|||j        z  z   t          j        |
|j                  z  |j        z  }|dk    |dk    |	j        dz  }|	j        |j        k    r|dz  }t!          |||          S )N)r   r   Nr   r   )nAPN   )rs
recoveryId)toBytesdigestr   curver   betweenr   r   multiplyGr   r   xsecretinvyr   )clsmessage
privateKeyhashfuncbyteMessagenumberMessager   r   r   randSignPointrandNumr   s               F/var/www/html/what/lib/python3.11/site-packages/ellipticcurve/ecdsa.pysignz
Ecdsa.sign   s   hww//007799,[99 (1m1ffQ#+Auw{;;G M%'W57V[V]^^^M%')A!j&7"77DHWeg<V<VW[`[bbA	 1ffQ
 #_q(
?UW$$!OJ1j9999    c                     |t          |                                                    }t          |          }|j        }|j        }|j        }	d|cxk    r|j        dz
  k    sn dS d|	cxk    r|j        dz
  k    sn dS t          j        |	|j                  }
t          j	        |j
        ||
z  |j        z  |j        |j        |j                  }t          j	        |j        ||
z  |j        z  |j        |j        |j                  }t          j        |||j        |j                  }|                                rdS |j        |j        z  |k    S )Nr   F)r   r   r   r   )r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   pointaddisAtInfinityr   )r   r    	signature	publicKeyr"   r#   r$   r   r   r   r   u1u2vs                 r'   verifyzEcdsa.verify   sW   hww//007799,[99KKA$$$$1$$$$5A$$$$1$$$$5hq%'""]57}s':eg&ETYT[_d_fggg]9?q3w%'.AUWPUPW[`[bcccHRuw%'222>> 	5sUW}!!r)   N)__name__
__module____qualname__classmethodr   r(   r3    r)   r'   r   r   	   sX        06 : : : [:" <B " " " [" " "r)   r   N)hashlibr   r.   r   mathr   utils.integerr   utils.binaryr   utils.compatibilityr   r8   r)   r'   <module>r>      s                            ( ( ( ( ( ( . . . . . . " " " "%" %" %" %" %" %" %" %" %" %"r)   