Ë
    V.j  ã            	       óB  — d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZ ddz  d	z
  Zd
Z e ed«      «      ZdZ e ed«      «      Z e ed«      «      Zddz  dz   Zd„ Z ej*                  eeeee«      Z ej.                  eeedeez  ez  ed¬«      Zddz  ddz  z
  dz
  ZdZdez  ZdZ e ed«      «      Z e ed«      «      Zddz  dz
  Zd„ Z ej*                  eeeee«      Z ej.                  eeedeez  ez  ed¬«      Z G d„ de«      Z G d„ d e«      Zy)!z6Implementation of Edwards Digital Signature Algorithm.é    Né   ©Ú	shake_256)Úellipticcurve)Úremove_whitespaceÚ
bit_lengthÚbytes_to_intÚint_to_bytesÚcompat26_stré   éÿ   é   éÿÿÿÿÚM37095705934669439343138083508754565189542113879843219016388785533085940283555é   ÚM15112221349535400772501151409588531511454012693041857206046113283949847762202ÚM46316835694926478169428394003475163141307993866256225615783033603165251855960éü   l	   íSë9i“@eMó^¨w|o c                 ó\   — t        j                  dt        | «      «      j                  «       S )NÚsha512)ÚhashlibÚnewr   Údigest©Údatas    úMC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\ecdsa/eddsa.pyÚ_sha512r   (   s!   € Ü�;‰;�x¤¨dÓ!3Ó4×;Ñ;Ó=Ð=ó    T)Ú	generatoriÀ  éà   iWgÿÿé   Ú‡224580040295924300187604334099896036246789641632564134246125461686950415467406032909029192869357953282578032075146446173674602635247710Ú‡298819210078481492676017930443930673437544040154080242095928241372331506189835876003536878655418784733982303233503462500531545062832660i¾  l   ;O)µu9d­
NG\cžIÞo’SDY%	»c‚;Í c                 ó   — t        | d«      S )Nér   r   r   s    r   Ú	_shake256r&   I   s   € Ü�T˜3ÓÐr   c                   ój   — e Zd ZdZdd„Zd„ Zd„ Zed„ «       Zej                  d„ «       Zd„ Z
d	„ Zd
„ Zy)Ú	PublicKeyz7Public key for the Edwards Digital Signature Algorithm.Nc                 ó–  — || _         |j                  «       | _        || _        t        | j                  j	                  «       «      dz   dz   dz  | _        t        |«      | j
                  k7  r$t        dj                  | j
                  «      «      ‚|r|| _	        y t        j                  j                  | j                  |«      | _	        y )Nr   é   r   z5Incorrect size of the public key, expected: {0} bytes)r   ÚcurveÚ_PublicKey__encodedr   ÚpÚbaselenÚlenÚ
ValueErrorÚformatÚ_PublicKey__pointr   ÚPointEdwardsÚ
from_bytes)Úselfr   Ú
public_keyÚpublic_points       r   Ú__init__zPublicKey.__init__V   s¢   € Ø"ˆŒØ—_‘_Ó&ˆŒ
Ø#ˆŒä" 4§:¡:§<¡<£>Ó2°QÑ6¸Ñ:¸qÑ@ˆŒÜˆz‹?˜dŸl™lÒ*ÜØG×NÑNØ—L‘Lóóð ñ
 Ø'ˆD�Lä(×5Ñ5×@Ñ@Ø—
‘
˜JóˆD�Lr   c                 ó–   — t        |t        «      r4| j                  |j                  k(  xr | j                  |j                  k(  S t        S ©N)Ú
isinstancer(   r+   r,   ÚNotImplemented©r5   Úothers     r   Ú__eq__zPublicKey.__eq__i   s;   € Ü�eœYÔ'à—
‘
˜eŸk™kÑ)ÒO¨d¯n©nÀÇÁÑ.Oðô Ðr   c                 ó   — | |k(   S r:   © r=   s     r   Ú__ne__zPublicKey.__ne__p   ó   € Ø˜5‘=Ð Ð r   c                 ó   — | j                   S r:   ©r2   ©r5   s    r   ÚpointzPublicKey.points   s   € à�|‰|Ðr   c                 óF   — | j                   |k7  rt        d«      ‚|| _         y )Nz)Can't change the coordinates of the point)r2   r0   r=   s     r   rG   zPublicKey.pointw   s!   € à�<‰<˜5Ò ÜÐHÓIÐIØˆ�r   c                 ó   — | j                   S r:   rE   rF   s    r   r7   zPublicKey.public_point}   s   € Ø�|‰|Ðr   c                 ó   — | j                   S r:   )r,   rF   s    r   r6   zPublicKey.public_key€   s   € Ø�~‰~Ðr   c                 óÄ  — t        |«      }t        |«      d| j                  z  k7  r't        dj	                  d| j                  z  «      «      ‚t
        j                  j                  | j                  |d| j                   «      }t        || j                  d d«      }|| j                  j                  «       k\  rt        d«      ‚t        «       }| j                  t        k(  rt        d«      }t        | j                  j                  ||j                  «       z   | j                   z   |z   «      d«      }| j                  |z  | j"                  |z  |z   k7  rt        d«      ‚y)z(Verify a Pure EdDSA signature over data.r   z-Invalid signature length, expected: {0} bytesNÚlittlezInvalid signatureó
   SigEd448  T)r   r/   r.   r0   r1   r   r3   r4   r+   r	   r   ÚorderÚ	bytearrayÚcurve_ed448Ú	hash_funcÚto_bytesr,   r2   )r5   r   Ú	signatureÚRÚSÚdomÚks          r   ÚverifyzPublicKey.verifyƒ   s4  € ä˜DÓ!ˆÜˆy‹>˜Q §¡Ñ-Ò-ÜØ?×FÑFØ˜Ÿ™Ñ$óóð ô
 ×&Ñ&×1Ñ1Ø�J‰J˜	 . D§L¡LÐ1ó
ˆô ˜ 4§<¡< >Ð2°HÓ=ˆØ�—‘×$Ñ$Ó&Ò&ÜÐ0Ó1Ð1ä‹kˆØ�:‰:œÒ$ÜÐ5Ó6ˆCäØ�J‰J× Ñ   q§z¡z£|Ñ!3°d·n±nÑ!DÀtÑ!KÓLØó
ˆð
 �>‰>˜AÑ §¡°Ñ!1°AÑ!5Ò5ÜÐ0Ó1Ð1àr   r:   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r8   r?   rB   ÚpropertyrG   Úsetterr7   r6   rX   rA   r   r   r(   r(   S   sO   „ ÙAóò&ò!ð ñó ðð ‡\�\ñó ðò
òór   r(   c                   óD   — e Zd ZdZd„ Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy	)
Ú
PrivateKeyz8Private key for the Edwards Digital Signature Algorithm.c                 ó  — || _         |j                  «       | _        t        | j                  j                  «       «      dz   dz   dz  | _        t        |«      | j                  k7  r$t        dj                  | j                  «      «      ‚t        |«      | _	        t        | j                  j                  |«      «      | _        d | _        | j                  d | j                   }| j                  |«      }t        |d«      }|| _        y )Nr   r*   r   z2Incorrect size of private key, expected: {0} bytesrL   )r   r+   r   r-   r.   r/   r0   r1   ÚbytesÚ_PrivateKey__private_keyrO   rQ   Ú_PrivateKey__hÚ_PrivateKey__public_keyÚ
_key_pruner	   Ú_PrivateKey__s)r5   r   Úprivate_keyÚaÚscalars        r   r8   zPrivateKey.__init__¥   sÖ   € Ø"ˆŒØ—_‘_Ó&ˆŒ
ä" 4§:¡:§<¡<£>Ó2°QÑ6¸Ñ:¸qÑ@ˆŒÜˆ{Ó˜tŸ|™|Ò+ÜØD×KÑKØ—L‘Lóóð ô
 # ;Ó/ˆÔÜ˜TŸZ™Z×1Ñ1°+Ó>Ó?ˆŒØ ˆÔà�H‰H�^�t—|‘|Ð$ˆØ�O‰O˜AÓˆÜ˜a Ó*ˆØˆ�r   c                 ó   — | j                   S r:   )rc   rF   s    r   rh   zPrivateKey.private_key¹   s   € à×!Ñ!Ð!r   c                 ó–   — t        |t        «      r4| j                  |j                  k(  xr | j                  |j                  k(  S t        S r:   )r;   r`   r+   rc   r<   r=   s     r   r?   zPrivateKey.__eq__½   sB   € Ü�eœZÔ(à—
‘
˜eŸk™kÑ)ò >Ø×&Ñ&¨%×*=Ñ*=Ñ=ðô Ðr   c                 ó   — | |k(   S r:   rA   r=   s     r   rB   zPrivateKey.__ne__Å   rC   r   c                 óV  — | j                   j                  «       }|dk(  rd}n|dk(  rd}nt        d«      ‚|dxx   d|z  dz
   z  cc<   t        | j                   j	                  «       «      }|dz  dk(  rd|d<   |d	xx   d
z  cc<   |S |d   d|dz  z  dz
  z  d|dz  dz
  z  z  |d<   |S )Nr!   r   r   é   z&Only cofactor 4 and 8 curves supportedr   r   r   éþÿÿÿé€   )r+   Úcofactorr0   r   r-   )r5   ÚkeyÚhÚh_logÚls        r   rf   zPrivateKey._key_pruneÈ   sÈ   € à�J‰J×ÑÓ!ˆØ�Š6Ø‰EØ�!ŠVØ‰EäÐEÓFÐFØˆA‹�Q˜%‘Z 1Ñ$Ð%Ñ%‹ô �t—z‘z—|‘|“~Ó&ˆØˆq‰5�AŠ:ØˆC�‰GØ�‹G�t‰O‹Gð ˆ
ð ˜"‘g  q¨1¡u¡°Ñ 2Ñ2°Q¸1¸q¹5ÀA¹+Ñ5EÑEˆC�‰GØˆ
r   c                 óÐ   — | j                   r| j                   S | j                  | j                  z  }t        | j                  |j	                  «       |«      | _         | j                   S )z9Generate the public key based on the included private key)re   r   rg   r(   rR   )r5   r7   s     r   r6   zPrivateKey.public_keyÜ   sX   € à×ÒØ×$Ñ$Ð$à—~‘~¨¯©Ñ0ˆä%Ø�N‰N˜L×1Ñ1Ó3°\ó
ˆÔð × Ñ Ð r   c                 óŠ  — t        |«      }| j                  «       j                  «       }| j                  | j                  d }t	        «       }| j
                  t        k(  rt	        d«      }t        | j
                  j                  ||z   |z   «      d«      }| j                  |z  j                  «       }t        | j
                  j                  ||z   |z   |z   «      d«      }|| j                  j                  «       z  }||| j                  z  z   | j                  j                  «       z  }|t        || j                  d«      z   S )z)Perform a Pure EdDSA signature over data.NrM   rL   )r   r6   rd   r.   rO   r+   rP   r	   rQ   r   rR   rN   rg   r
   )	r5   r   ÚAÚprefixrV   ÚrrT   rW   rU   s	            r   ÚsignzPrivateKey.signé   s	  € ä˜DÓ!ˆØ�O‰OÓ×(Ñ(Ó*ˆà—‘˜$Ÿ,™,˜.Ð)ˆä‹kˆØ�:‰:œÒ$ÜÐ5Ó6ˆCä˜Ÿ™×-Ñ-¨c°F©l¸TÑ.AÓBÀHÓMˆØ�^‰^˜aÑ×)Ñ)Ó+ˆä˜Ÿ™×-Ñ-¨c°A©g¸©k¸DÑ.@ÓAÀ8ÓLˆØ	ˆT�^‰^×!Ñ!Ó#Ñ#ˆà��T—X‘X‘Ñ §¡×!5Ñ!5Ó!7Ñ7ˆà”<  4§<¡<°Ó:Ñ:Ð:r   N)rY   rZ   r[   r\   r8   r]   rh   r?   rB   rf   r6   r|   rA   r   r   r`   r`   ¢   s7   „ ÙBòð( ñ"ó ð"òò!òò(!ó;r   r`   )r\   r   Ú_sha3r   Ú r   Ú_compatr   r   r	   r
   r   Ú_pÚ_aÚintÚ_dÚ_hÚ_GxÚ_GyÚ_rr   Ú	CurveEdTwÚcurve_ed25519r3   Úgenerator_ed25519r&   rP   Úgenerator_ed448Úobjectr(   r`   rA   r   r   Ú<module>r�      s¬  ðÙ <ã Ý Ý ÷õ ð ˆ�Vˆb�[€Ø€ÙÙð	óó€ð €á	Ùð	óó€ñ 
Ùð	óó€ð ˆ�VÐ0Ñ0€ò>ð (�×'Ñ'¨¨B°°B¸Ó@€Ø.�M×.Ñ.Ø�3˜˜Q  c¡	¨B¡°¸dôÐ ð ˆ�Vˆa�‰f�_�qÑ€Ø€Øˆb�[€Ø€á	Ùð	óó€ñ 
Ùð	óó€ð ˆ�VÐHÑH€ò ð &ˆm×%Ñ% b¨"¨b°"°iÓ@€Ø,�-×,Ñ,Ø��c˜1˜c C™i¨"™n¨b¸Dô€ô
L�ô Lô^Z;�õ Z;r   