
    [Ah              
       6   S r SSKrSSKJr  SSKJr  SSKJrJrJ	r	J
r
Jr  SS-  S	-
  rS
r\" \" S5      5      rSr\" \" S5      5      r\" \" S5      5      rSS-  S-   rS r\R*                  " \\\\\5      r\R.                  " \\\S\\-  \-  \SS9rSS-  SS-  -
  S-
  rSrS\-  rSr\" \" S5      5      r\" \" S5      5      rSS-  S-
  rS r\R*                  " \\\\\5      r\R.                  " \\\S\\-  \-  \SS9r " S S\5      r " S S \5      rg)!z6Implementation of Edwards Digital Signature Algorithm.    N   	shake_256)ellipticcurve)remove_whitespace
bit_lengthbytes_to_intint_to_bytescompat26_str         M37095705934669439343138083508754565189542113879843219016388785533085940283555   M15112221349535400772501151409588531511454012693041857206046113283949847762202M46316835694926478169428394003475163141307993866256225615783033603165251855960   l	   S9i@eM^w|o c                 ^    [         R                  " S[        U 5      5      R                  5       $ )Nsha512)hashlibnewr   digestdatas    RC:\Users\julio\Documents\inmobiliaria_backend\env\Lib\site-packages\ecdsa/eddsa.py_sha512r   (   s!    ;;xd!34;;==    T)	generatori     iWg   ڇ224580040295924300187604334099896036246789641632564134246125461686950415467406032909029192869357953282578032075146446173674602635247710ڇ298819210078481492676017930443930673437544040154080242095928241372331506189835876003536878655418784733982303233503462500531545062832660i  l   ;O)u9d
NG\cIoSDY%	c; c                     [        U S5      $ )Nr   r   r   s    r   	_shake256r&   I   s    T3r   c                   t    \ rS rSrSrSS jrS rS r\S 5       r	\	R                  S 5       r	S	 rS
 rS rSrg)	PublicKeyS   z7Public key for the Edwards Digital Signature Algorithm.Nc                    Xl         UR                  5       U l        X l        [        U R                  R	                  5       5      S-   S-   S-  U l        [        U5      U R
                  :w  a$  [        SR                  U R
                  5      5      eU(       a  X0l	        g [        R                  R                  U R                  U5      U l	        g )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__PublicKey.__init__V   s    "__&
#"4::<<>2Q6:q@z?dll*GNNLL 
 'L(55@@

JDLr   c                     [        U[        5      (       a9  U R                  UR                  :H  =(       a    U R                  UR                  :H  $ [        $ N)
isinstancer(   r,   r-   NotImplementedr6   others     r   __eq__PublicKey.__eq__i   s>    eY''

ekk)Odnn.O r   c                     X:X  + $ r<    r?   s     r   __ne__PublicKey.__ne__p         r   c                     U R                   $ r<   r3   r6   s    r   pointPublicKey.points   s    ||r   c                 F    U R                   U:w  a  [        S5      eXl         g )Nz)Can't change the coordinates of the point)r3   r1   r?   s     r   rK   rL   w   s    <<5 HIIr   c                     U R                   $ r<   rI   rJ   s    r   r8   PublicKey.public_point}   s    ||r   c                     U R                   $ r<   )r-   rJ   s    r   r7   PublicKey.public_key   s    ~~r   c                    [        U5      n[        U5      SU R                  -  :w  a'  [        SR	                  SU R                  -  5      5      e[
        R                  R                  U R                  USU R                   5      n[        X R                  S S5      nX@R                  R                  5       :  a  [        S5      e[        5       nU R                  [        :X  a  [        S5      n[        U R                  R                  XSR                  5       -   U R                   -   U-   5      S5      nU R                  U-  U R"                  U-  U-   :w  a  [        S5      eg)z(Verify a Pure EdDSA signature over data.r   z-Invalid signature length, expected: {0} bytesNlittlezInvalid signature
   SigEd448  T)r   r0   r/   r1   r2   r   r4   r5   r,   r	   r   order	bytearraycurve_ed448	hash_functo_bytesr-   r3   )r6   r   	signatureRSdomks          r   verifyPublicKey.verify   s.   D!y>Q--?FF$ 
 &&11JJ	.DLL1
 <<>2H=$$&&011k::$56CJJ  zz|!3dnn!Dt!KL

 >>A!1A!55011r   )	__encoded__pointr/   r,   r   r<   )__name__
__module____qualname____firstlineno____doc__r9   rA   rE   propertyrK   setterr8   r7   r_   __static_attributes__rD   r   r   r(   r(   S   sO    A&!   \\ 
r   r(   c                   L    \ rS rSrSrS r\S 5       rS rS r	S r
S rS	 rS
rg)
PrivateKey   z8Private key for the Edwards Digital Signature Algorithm.c                    Xl         UR                  5       U l        [        U R                  R                  5       5      S-   S-   S-  U l        [        U5      U R                  :w  a$  [        SR                  U R                  5      5      e[        U5      U l	        [        U R                  R                  U5      5      U l        S U l        U R                  S U R                   nU R                  U5      n[        US5      nX@l        g )Nr   r+   r   z2Incorrect size of private key, expected: {0} bytesrS   )r   r,   r   r.   r/   r0   r1   r2   bytes_PrivateKey__private_keyrV   rX   _PrivateKey__h_PrivateKey__public_key
_key_pruner	   _PrivateKey__s)r6   r   private_keyascalars        r   r9   PrivateKey.__init__   s    "__&
"4::<<>2Q6:q@{t||+DKKLL 
 #;/TZZ11+>? HH^t||$OOAa*r   c                     U R                   $ r<   )rp   rJ   s    r   ru   PrivateKey.private_key   s    !!!r   c                     [        U[        5      (       a9  U R                  UR                  :H  =(       a    U R                  UR                  :H  $ [        $ r<   )r=   rl   r,   rp   r>   r?   s     r   rA   PrivateKey.__eq__   sE    eZ((

ekk) >&&%*=*== r   c                     X:X  + $ r<   rD   r?   s     r   rE   PrivateKey.__ne__   rG   r   c                 \   U R                   R                  5       nUS:X  a  SnOUS:X  a  SnO[        S5      eUS==   SU-  S-
  ) -  ss'   [        U R                   R	                  5       5      nUS-  S:X  a  SUS'   US	==   S
-  ss'   U$ US   SUS-  -  S-
  -  SUS-  S-
  -  -  US'   U$ )Nr!   r   r      z&Only cofactor 4 and 8 curves supportedr   r   r      )r,   cofactorr1   r   r.   )r6   keyhh_logls        r   rs   PrivateKey._key_prune   s    JJ!6E!VEEFFAQ%Z1$%% tzz||~&q5A:CGGtOG 
 "gq1u 22Q1q5A+5EECG
r   c                     U R                   (       a  U R                   $ U R                  U R                  -  n[        U R                  UR	                  5       U5      U l         U R                   $ )z9Generate the public key based on the included private key)rr   r   rt   r(   rY   )r6   r8   s     r   r7   PrivateKey.public_key   sX    $$$~~0%NNL113\
    r   c                    [        U5      nU R                  5       R                  5       nU R                  U R                  S n[	        5       nU R
                  [        :X  a  [	        S5      n[        U R
                  R                  XC-   U-   5      S5      nU R                  U-  R                  5       n[        U R
                  R                  XF-   U-   U-   5      S5      nXpR                  R                  5       -  nXWU R                  -  -   U R                  R                  5       -  nU[        XR                  S5      -   $ )z)Perform a Pure EdDSA signature over data.NrT   rS   )r   r7   rq   r/   rV   r,   rW   r	   rX   r   rY   rU   rt   r
   )	r6   r   Aprefixr]   rr[   r^   r\   s	            r   signPrivateKey.sign   s    D!OO((*$,,.)k::$56C--clT.ABHM^^a))+--cgkD.@A8L	^^!!##TXX!5!5!77<<<:::r   )__h__private_key__public_key__sr/   r,   r   N)rc   rd   re   rf   rg   r9   rh   ru   rA   rE   rs   r7   r   rj   rD   r   r   rl   rl      s7    B( " "!(!;r   rl   )rg   r   _sha3r    r   _compatr   r   r	   r
   r   _p_aint_d_h_Gx_Gy_rr   	CurveEdTwcurve_ed25519r4   generator_ed25519r&   rW   generator_ed448objectr(   rl   rD   r   r   <module>r      s   <     Vb[	 		 
	 V00> ''BB@!..3Qc	Bd  Vaf_qb[		 
	 VHH  %%b"b"i@,,c1cCi"nbD
L L^Z; Z;r   