Ë
    V.jg>  ã                   óR  — d dl mZ d dlmZ ddlmZmZmZmZ ddl	m
Z
mZmZ ddlmZmZ g d¢ZdZd	Z G d
„ de«      Z G d„ d«      Z edej,                  ej.                  dd«      Z edej2                  ej4                  dd«      Z edej8                  ej:                  dd«      Z edej>                  ej@                  dd«      Z! edejD                  ejF                  dd«      Z$ edejJ                  ejL                  dd«      Z' ed ejP                  ejR                  d!d"«      Z* ed#ejV                  ejX                  d$d%«      Z- ed&ej\                  ej^                  d'd(«      Z0 ed)ejb                  ejd                  d*d+«      Z3 ed,ejh                  ejj                  d-d.«      Z6 ed/ejn                  ejp                  d0d1«      Z9 ed2ejt                  ejv                  d3d4«      Z< ed5ejz                  ej|                  d6d7«      Z? ed8ej€                  ej‚                  d9d:«      ZB ed;ej†                  ejˆ                  d<d=«      ZE ed>ejŒ                  ejŽ                  d?d@«      ZH edAej’                  ej”                  dBdC«      ZK edDej˜                  ejš                  dEdF«      ZN edGejž                  ej                   dHdI«      ZQ edJej¤                  ej¦                  dKdL«      ZT edMejª                  ej¬                  dNdO«      ZW edPej°                  ej²                  dQdR«      ZZ edSej¶                  ej¸                  dTdU«      Z] edVej¼                  ej¾                  dW«      Z` edXejÂ                  ejÄ                  dY«      Zce$e'e*e-e0e3e6e<eBeHeNeTeZeeee!e`ece9e?eEeKeQeWe]gZddZ„ Zed[„ Zfy\)]é    )Údivision)ÚPY2é   )ÚderÚecdsaÚellipticcurveÚeddsa)ÚorderlenÚnumber_to_stringÚstring_to_number)Únormalise_bytesÚ
bit_length)"ÚUnknownCurveErrorr
   ÚCurveÚ	SECP112r1Ú	SECP112r2Ú	SECP128r1Ú	SECP160r1ÚNIST192pÚNIST224pÚNIST256pÚNIST384pÚNIST521pÚcurvesÚ
find_curveÚcurve_by_nameÚ	SECP256k1ÚBRAINPOOLP160r1ÚBRAINPOOLP160t1ÚBRAINPOOLP192r1ÚBRAINPOOLP192t1ÚBRAINPOOLP224r1ÚBRAINPOOLP224t1ÚBRAINPOOLP256r1ÚBRAINPOOLP256t1ÚBRAINPOOLP320r1ÚBRAINPOOLP320t1ÚBRAINPOOLP384r1ÚBRAINPOOLP384t1ÚBRAINPOOLP512r1ÚBRAINPOOLP512t1ÚPRIME_FIELD_OIDÚCHARACTERISTIC_TWO_FIELD_OIDÚEd25519ÚEd448)r   é   éH  é='  r   r   )r   r0   r1   r2   r   r0   c                   ó   — e Zd Zy)r   N)Ú__name__Ú
__module__Ú__qualname__© ó    úNC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\ecdsa/curves.pyr   r   5   s   „ Ør8   r   c                   óZ   — e Zd Zd
d„Zd„ Zd„ Zd„ Zdd„Zdd„Ze	d
d„«       Z
ed
d	„«       Zy)r   Nc                 óì  — || _         || _        || _        || _        |j	                  «       | _        t        |t        j                  «      r9t        |j                  «       «      dz   dz   dz  | _
        | j                  | _        n;t        | j                  «      | _
        dt        |j                  «       «      z  | _        d| j                  z  | _        || _        |rt        j                   |Ž | _        y y )Nr   é   é   r0   )ÚnameÚopenssl_nameÚcurveÚ	generatorÚorderÚ
isinstancer   Ú	CurveEdTwr   ÚpÚbaselenÚverifying_key_lengthr
   Úsignature_lengthÚoidr   Ú
encode_oidÚencoded_oid)Úselfr>   r@   rA   rI   r?   s         r9   Ú__init__zCurve.__init__:   sÅ   € ØˆŒ	Ø(ˆÔØˆŒ
Ø"ˆŒØ—_‘_Ó&ˆŒ
Ü�eœ]×4Ñ4Ô5ô
 ' u§w¡w£yÓ1°AÑ5¸Ñ9¸aÑ?ˆDŒLØ(,¯©ˆDÕ%ä# D§J¡JÓ/ˆDŒLØ()¬H°U·W±W³YÓ,?Ñ(?ˆDÔ%Ø ! D§L¡LÑ 0ˆÔØˆŒÙÜ"Ÿ~™~¨sÐ3ˆDÕð r8   c                 ó–   — t        |t        «      r4| j                  |j                  k(  xr | j                  |j                  k(  S t        S ©N)rC   r   r@   rA   ÚNotImplemented©rL   Úothers     r9   Ú__eq__zCurve.__eq__O   s;   € Ü�eœUÔ#à—
‘
˜eŸk™kÑ)ÒO¨d¯n©nÀÇÁÑ.Oðô Ðr8   c                 ó   — | |k(   S rO   r7   rQ   s     r9   Ú__ne__zCurve.__ne__V   s   € Ø˜5‘=Ð Ð r8   c                 ó   — | j                   S rO   )r>   )rL   s    r9   Ú__repr__zCurve.__repr__Y   s   € Ø�y‰yÐr8   c           	      óž  — |€| j                   rd}nd}|dvrt        d«      ‚|dk(  r3| j                   st        d«      ‚t        j                  | j                   Ž S t        | j                  t        j                  «      r|dk(  sJ ‚t        d«      ‚| j                  j                  «       }t        j                  d«      }t        j                  t        j                  t        Ž t        j                  |«      «      }t        j                  t        j                  t        | j                  j                  «       |z  |«      «      t        j                  t        | j                  j!                  «       |z  |«      «      «      }t        j                  | j"                  j%                  |«      «      }t        j                  | j"                  j'                  «       «      }|||||g}	| j                  j)                  «       r>t        j                  | j                  j)                  «       «      }
|	j+                  |
«       t        j                  |	Ž S )aõ  Serialise the curve parameters to binary string.

        :param str encoding: the format to save the curve parameters in.
            Default is ``named_curve``, with fallback being the ``explicit``
            if the OID is not set for the curve.
        :param str point_encoding: the point encoding of the generator when
            explicit curve encoding is used. Ignored for ``named_curve``
            format.

        :return: DER encoded ECParameters structure
        :rtype: bytes
        Únamed_curveÚexplicit©rY   rZ   z5Only 'named_curve' and 'explicit' encodings supportedzJCan't encode curve using named_curve encoding without associated curve OIDz6Twisted Edwards curves don't support explicit encodingr   )rI   Ú
ValueErrorr   r   rJ   rC   r@   r   rD   rE   Úencode_integerÚencode_sequencer,   Úencode_octet_stringr   ÚaÚbrA   Úto_bytesrB   ÚcofactorÚappend)rL   ÚencodingÚpoint_encodingÚcurve_pÚversionÚfield_idr@   ÚbaserB   Úseq_elementsrc   s              r9   Úto_derzCurve.to_der\   sä  € ð ÐØ�xŠxØ(‘à%�àÐ6Ñ6ÜØGóð ð �}Ò$Ø—8’8Ü'ð+óð ô —>‘> 4§8¡8Ð,Ð,Ü˜Ÿ
™
¤M×$;Ñ$;Ô<Ø˜zÒ)Ð)Ð)Ü#ØHóð ð
 —*‘*—,‘,“.ˆÜ×$Ñ$ QÓ'ˆÜ×&Ñ&Ü�N‰NœOÐ,¬c×.@Ñ.@ÀÓ.Ió
ˆô ×#Ñ#Ü×#Ñ#Ü  §¡§¡£°'Ñ!9¸7ÓCóô ×#Ñ#Ü  §¡§¡£°'Ñ!9¸7ÓCóó	
ˆô ×&Ñ& t§~¡~×'>Ñ'>¸~Ó'NÓOˆÜ×"Ñ" 4§>¡>×#7Ñ#7Ó#9Ó:ˆØ ¨5°$¸Ð>ˆØ�:‰:×ÑÔ Ü×)Ñ)¨$¯*©*×*=Ñ*=Ó*?Ó@ˆHØ×Ñ Ô)ä×"Ñ" LÐ1Ð1r8   c                 óN   — t        j                  | j                  ||«      d«      S )a  
        Serialise the curve parameters to the :term:`PEM` format.

        :param str encoding: the format to save the curve parameters in.
            Default is ``named_curve``, with fallback being the ``explicit``
            if the OID is not set for the curve.
        :param str point_encoding: the point encoding of the generator when
            explicit curve encoding is used. Ignored for ``named_curve``
            format.

        :return: PEM encoded ECParameters structure
        :rtype: str
        zEC PARAMETERS)r   Útopemrl   )rL   re   rf   s      r9   Úto_pemzCurve.to_pem˜   s%   € ô �y‰yØ�K‰K˜ .Ó1°?ó
ð 	
r8   c                 óp  — |st        d«      }t        d„ |D «       «      st        d«      ‚t        | «      } t	        j
                  | «      sSd|vrt	        j                  d«      ‚t	        j                  | «      \  }}|rt	        j                  d«      ‚t        |«      S d|vrt	        j                  d«      ‚t	        j                  | «      \  }}|rt	        j                  d	«      ‚t	        j                  |«      \  }}|d
k7  rt	        j                  d«      ‚t	        j                  |«      \  }}t	        j                  |«      \  }}t	        j                  |«      \  }	}t	        j                  |«      \  }
}d}|rt	        j                  |«      \  }}t	        j                  |«      \  }}|t        k(  rt        d«      ‚|t        k7  rt        dj                  |«      «      ‚t	        j                  |«      \  }}|rt	        j                  d«      ‚t	        j                  |«      \  }}t	        j                  |«      \  }}t!        |«      }t!        |«      }t#        j$                  ||||«      }t"        j&                  j)                  ||	d|
d¬«      }t+        d||d«      }t,        D ]  }||k(  sŒ	|c S  |S )a—  Decode the curve parameters from DER file.

        :param data: the binary string to decode the parameters from
        :type data: :term:`bytes-like object`
        :param valid_encodings: set of names of allowed encodings, by default
            all (set by passing ``None``), supported ones are ``named_curve``
            and ``explicit``
        :type valid_encodings: :term:`set-like object`
        r[   c              3   ó$   K  — | ]  }|d v –— Œ
 y­w)r[   Nr7   )Ú.0Úis     r9   Ú	<genexpr>z!Curve.from_der.<locals>.<genexpr>·   s   è ø€ ÐM¹_¸�1Ð3Ô3¹_ùs   ‚z1Only named_curve and explicit encodings supportedrY   z(named_curve curve parameters not allowedzUnexpected data after OIDrZ   z%explicit curve parameters not allowedz,Unexpected data after ECParameters structurer   z!Unknown parameter encoding formatNz#Characteristic 2 curves unsupportedzUnknown field type: {0}z:Unexpected data after ECParameters.fieldID.Prime-p element)ÚuncompressedÚ
compressedÚhybridT)Úvalid_encodingsrB   rA   Úunknown)ÚsetÚallr\   r   r   Úis_sequenceÚUnexpectedDERÚremove_objectr   Úremove_sequenceÚremove_integerÚremove_octet_stringr-   r   r,   Úformatr   r   ÚCurveFpÚPointJacobiÚ
from_bytesr   r   )Údatarx   rI   ÚemptyÚseqrh   Úrestri   r@   Ú
base_bytesrB   rc   Ú_Ú
field_typeÚprimeÚcurve_a_bytesÚcurve_b_bytesÚcurve_aÚcurve_bÚcurve_fprj   Ú	tmp_curvers   s                          r9   Úfrom_derzCurve.from_derª   s´  € ñ Ü!Ð"=Ó>ˆOÜÑM¹_ÓMÔMÜØCóð ô ˜tÓ$ˆÜ�‰˜tÔ$Ø OÑ3Ü×'Ñ'Ø>óð ô ×*Ñ*¨4Ó0‰JˆC�ÙÜ×'Ñ'Ð(CÓDÐDÜ˜c“?Ð"à˜_Ñ,Ü×#Ñ#Ð$KÓLÐLä×(Ñ(¨Ó.‰
ˆˆUÙÜ×#Ñ#Ø>óð ô ×*Ñ*¨3Ó/‰ˆ�Ø�aŠ<Ü×#Ñ#Ð$GÓHÐHÜ×,Ñ,¨TÓ2‰ˆ�$Ü×)Ñ)¨$Ó/‰ˆˆtÜ×2Ñ2°4Ó8Ñˆ
�DÜ×(Ñ(¨Ó.‰ˆˆtØˆÙô ×,Ñ,¨TÓ2‰KˆH�aô ×,Ñ,¨XÓ6Ñˆ
�DØÔ5Ò5Ü#Ð$IÓJÐJØœÒ(Ü#Ø)×0Ñ0°Ó<óð ô ×)Ñ)¨$Ó/‰ˆˆuÙÜ×#Ñ#ØLóð ô
 "×5Ñ5°eÓ<Ñˆ�tÜ!×5Ñ5°dÓ;Ñˆ�tô # =Ó1ˆÜ" =Ó1ˆä ×(Ñ(¨°¸À(ÓKˆô ×(Ñ(×3Ñ3ØØØDØØð 4ó 
ˆô ˜) X¨t°TÓ:ˆ	÷ ˆAØ˜A‹~Ø’ð ð Ðr8   c                 óô   — t         s t        |t        «      r|j                  «       }|j	                  d«      }|dk(  rt        j                  d«      ‚| j                  t        j                  ||d «      |«      S )am  Decode the curve parameters from PEM file.

        :param str string: the text string to decode the parameters from
        :param valid_encodings: set of names of allowed encodings, by default
            all (set by passing ``None``), supported ones are ``named_curve``
            and ``explicit``
        :type valid_encodings: :term:`set-like object`
        s   -----BEGIN EC PARAMETERS-----éÿÿÿÿz"EC PARAMETERS PEM header not foundN)	r   rC   ÚstrÚencodeÚfindr   r}   r”   Úunpem)ÚclsÚstringrx   Úec_param_indexs       r9   Úfrom_pemzCurve.from_pem  sj   € õ ”z &¬#Ô.Ø—]‘]“_ˆFàŸ™Ð%EÓFˆØ˜RÒÜ×#Ñ#Ð$HÓIÐIà�|‰|Ü�I‰I�f˜^˜_Ð-Ó.°ó
ð 	
r8   rO   )Nru   )r4   r5   r6   rM   rS   rU   rW   rl   ro   Ústaticmethodr”   Úclassmethodrž   r7   r8   r9   r   r   9   sL   „ ó4ò*ò!òó:2óx
ð$ òYó ðYðv ò
ó ñ
r8   r   r   )r   é   é„   r   é   Ú	secp112r1r   )r   r¡   r¢   r   r<   Ú	secp112r2r   )r   r¡   r¢   r   é   Ú	secp128r1r   )r   r¡   r¢   r   r=   Ú	secp160r1r   )r   r0   r1   r2   r¡   r   r   Ú
prime192v1r   )r   r¡   r¢   r   é!   Ú	secp224r1r   )r   r0   r1   r2   r¡   r   r<   Ú
prime256v1r   )r   r¡   r¢   r   é"   Ú	secp384r1r   )r   r¡   r¢   r   é#   Ú	secp521r1r   )r   r¡   r¢   r   é
   Ú	secp256k1r   )
r   r¡   é$   r¡   r¡   r0   r=   r   r   r   ÚbrainpoolP160r1r   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   r0   ÚbrainpoolP160t1r    )
r   r¡   r³   r¡   r¡   r0   r=   r   r   r¡   ÚbrainpoolP192r1r!   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   é   ÚbrainpoolP192t1r"   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   é   ÚbrainpoolP224r1r#   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   r£   ÚbrainpoolP224t1r$   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   r<   ÚbrainpoolP256r1r%   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   r=   ÚbrainpoolP256t1r&   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   é	   ÚbrainpoolP320r1r'   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   r±   ÚbrainpoolP320t1r(   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   é   ÚbrainpoolP384r1r)   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   é   ÚbrainpoolP384t1r*   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   é   ÚbrainpoolP512r1r+   )
r   r¡   r³   r¡   r¡   r0   r=   r   r   é   ÚbrainpoolP512t1r.   )r   r¡   ée   ép   r/   )r   r¡   rÉ   éq   c           	      ó¢   — t         D ]  }|j                  | k(  sŒ|c S  t        d| ›dt         D �cg c]  }|j                  ‘Œ c}›�«      ‚c c}w )a9  Select a curve based on its OID

    :param tuple[int,...] oid_curve: ASN.1 Object Identifier of the
        curve to return, like ``(1, 2, 840, 10045, 3, 1, 7)`` for ``NIST256p``.

    :raises UnknownCurveError: When the oid doesn't match any of the supported
        curves

    :rtype: ~ecdsa.curves.Curve
    z&I don't know about the curve with oid z.I only know about these: )r   rI   r   r>   )Ú	oid_curveÚcs     r9   r   r   %  sO   € ÷ ˆØ�5‰5�IÓØŠHð õ â)2ÅVÓ4LÁVÀ°Q·V³VÀVÒ4Lð	Nóð ùâ4Ls   °Ac           	      óî   — t         D ]1  }| |j                  k(  s|j                  sŒ| |j                  k(  sŒ/|c S  t        dj	                  | t         D �cg c]  }|j                  ‘Œ c}«      «      ‚c c}w )a{  Select a curve based on its name.

    Returns a :py:class:`~ecdsa.curves.Curve` object with a ``name`` name.
    Note that ``name`` is case-sensitve.

    :param str name: Name of the curve to return, like ``NIST256p`` or
        ``prime256v1``

    :raises UnknownCurveError: When the name doesn't match any of the supported
        curves

    :rtype: ~ecdsa.curves.Curve
    z9Curve with name {0!r} unknown, only curves supported: {1})r   r>   r?   r   r‚   )r>   rÎ   s     r9   r   r   9  sg   € ÷ ˆØ�1—6‘6Š>˜aŸn›n°¸¿¹Ó1GØŠHð ô ØC×JÑJØ¥6Ó*¡6˜a�1—6“6 6Ñ*ó	
óð ùâ*s   ÁA2N)gÚ
__future__r   Úsixr   Ú r   r   r   r	   Úutilr
   r   r   Ú_compatr   r   Ú__all__r,   r-   Ú	Exceptionr   r   Úcurve_112r1Úgenerator_112r1r   Úcurve_112r2Úgenerator_112r2r   Úcurve_128r1Úgenerator_128r1r   Úcurve_160r1Úgenerator_160r1r   Ú	curve_192Úgenerator_192r   Ú	curve_224Úgenerator_224r   Ú	curve_256Úgenerator_256r   Ú	curve_384Úgenerator_384r   Ú	curve_521Úgenerator_521r   Úcurve_secp256k1Úgenerator_secp256k1r   Úcurve_brainpoolp160r1Úgenerator_brainpoolp160r1r   Úcurve_brainpoolp160t1Úgenerator_brainpoolp160t1r   Úcurve_brainpoolp192r1Úgenerator_brainpoolp192r1r    Úcurve_brainpoolp192t1Úgenerator_brainpoolp192t1r!   Úcurve_brainpoolp224r1Úgenerator_brainpoolp224r1r"   Úcurve_brainpoolp224t1Úgenerator_brainpoolp224t1r#   Úcurve_brainpoolp256r1Úgenerator_brainpoolp256r1r$   Úcurve_brainpoolp256t1Úgenerator_brainpoolp256t1r%   Úcurve_brainpoolp320r1Úgenerator_brainpoolp320r1r&   Úcurve_brainpoolp320t1Úgenerator_brainpoolp320t1r'   Úcurve_brainpoolp384r1Úgenerator_brainpoolp384r1r(   Úcurve_brainpoolp384t1Úgenerator_brainpoolp384t1r)   Úcurve_brainpoolp512r1Úgenerator_brainpoolp512r1r*   Úcurve_brainpoolp512t1Úgenerator_brainpoolp512t1r+   Úcurve_ed25519Úgenerator_ed25519r.   Úcurve_ed448Úgenerator_ed448r/   r   r   r   r7   r8   r9   Ú<module>r     s�  ðÝ å ß .Ó .ß >Ñ >ß 0ò
#€ðL +€Ø7Ð ô	˜	ô 	÷`
ñ `
ñH ØØ	×ÑØ	×ÑØØó€	ñ ØØ	×ÑØ	×ÑØØó€	ñ ØØ	×ÑØ	×ÑØØó€	ñ ØØ	×ÑØ	×ÑØØó€	ñ ØØ	‡O�OØ	×ÑØØó€ñ ØØ	‡O�OØ	×ÑØØó€ñ ØØ	‡O�OØ	×ÑØØó€ñ ØØ	‡O�OØ	×ÑØØó€ñ ØØ	‡O�OØ	×ÑØØó€ñ ØØ	×ÑØ	×ÑØØó€	ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø#Øó€ñ ØØ	×ÑØ	×#Ñ#Ø$Øó€ñ ØØ	×ÑØ	×#Ñ#Ø$Øó€ñ ØØ	×ÑØ	×#Ñ#Ø$Øó€ñ ØØ	×ÑØ	×#Ñ#Ø$Øó€ñ ØØ	×ÑØ	×#Ñ#Ø$Øó€ñ ØØ	×ÑØ	×ÑØó	€ñ 	ØØ	×ÑØ	×ÑØó		€ð ØØØØØØØØØØØØØØØØØØ	ØØØØØØØð5
€ò<ó(r8   