§
    qŠtj  ã            	       ó|  — 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dS )!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                 ój   — t          j        dt          | ¦  «        ¦  «                             ¦   «         S )NÚsha512)ÚhashlibÚnewr   Údigest©Údatas    úI/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/ecdsa/eddsa.pyÚ_sha512r   (   s(   € ÝŒ;�x¥¨dÑ!3Ô!3Ñ4Ô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                   ón   — 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dS )Ú	PublicKeyz7Public key for the Edwards Digital Signature Algorithm.Nc                 ó¤  — || _         |                     ¦   «         | _        || _        t          | j                             ¦   «         ¦  «        dz   dz   dz  | _        t          |¦  «        | j        k    r't          d                     | j        ¦  «        ¦  «        ‚|r	|| _	        d S t          j                             | j        |¦  «        | _	        d S )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Ô2°QÑ6¸Ñ:¸qÑ@ˆŒÝˆz‰?Œ?˜dœlÒ*Ð*ÝØG×NÒNØ”Lñô ñô ð ð
 ð 	Ø'ˆDŒLˆLˆLå(Ô5×@Ò@Ø”
˜Jñô ˆDŒLˆLˆLr   c                 óz   — t          |t          ¦  «        r | j        |j        k    o| j        |j        k    S t          S ©N)Ú
isinstancer(   r+   r,   ÚNotImplemented©r5   Úothers     r   Ú__eq__zPublicKey.__eq__i   s;   € Ý�e�YÑ'Ô'ð 	à”
˜eœkÒ)ÐO¨d¬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                 óH   — | j         |k    rt          d¦  «        ‚|| _         d S )Nz)Can't change the coordinates of the point)r2   r0   r=   s     r   rG   zPublicKey.pointw   s)   € àŒ<˜5Ò Ð ÝÐHÑIÔ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  k    r*t          d                     d| j        z  ¦  «        ¦  «        ‚t
          j                             | j        |d| j        …         ¦  «        }t          || j        d…         d¦  «        }|| j
                             ¦   «         k    rt          d¦  «        ‚t          ¦   «         }| j        t          k    rt          d¦  «        }t          | j                             ||                     ¦   «         z   | j        z   |z   ¦  «        d¦  «        }| j
        |z  | j        |z  |z   k    rt          d¦  «        ‚dS )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ƒ   s\  € å˜DÑ!Ô!ˆÝˆy‰>Œ>˜Q ¤Ñ-Ò-Ð-ÝØ?×FÒFØ˜œÑ$ñô ñô ð õ
 Ô&×1Ò1ØŒJ˜	 . D¤L .Ô1ñ
ô 
ˆõ ˜ 4¤< > >Ô2°HÑ=Ô=ˆØ�”×$Ò$Ñ&Ô&Ò&Ð&ÝÐ0Ñ1Ô1Ð1å‰kŒkˆØŒ:�Ò$Ð$ÝÐ5Ñ6Ô6ˆCåØŒJ× Ò   q§z¢z¡|¤|Ñ!3°d´nÑ!DÀtÑ!KÑLÔLØñ
ô 
ˆð
 Œ>˜AÑ ¤°Ñ!1°AÑ!5Ò5Ð5ÝÐ0Ñ1Ô1Ð1àˆtr   r:   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r8   r?   rB   ÚpropertyrG   Úsetterr7   r6   rX   rA   r   r   r(   r(   S   s±   € € € € € ØAÐAðð ð ð ð&ð ð ð!ð !ð !ð ðð ñ „Xðð „\ðð ñ „\ðð
ð ð ðð ð ðð ð ð ð r   r(   c                   óL   — e Zd ZdZd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	S )
Ú
PrivateKeyz8Private key for the Edwards Digital Signature Algorithm.c                 ó:  — || _         |                     ¦   «         | _        t          | j                             ¦   «         ¦  «        dz   dz   dz  | _        t          |¦  «        | j        k    r't          d                     | j        ¦  «        ¦  «        ‚t          |¦  «        | _	        t          | j                             |¦  «        ¦  «        | _        d | _        | j        d | j        …         }|                      |¦  «        }t          |d¦  «        }|| _        d S )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Ô2°QÑ6¸Ñ:¸qÑ@ˆŒÝˆ{ÑÔ˜tœ|Ò+Ð+ÝØD×KÒKØ”Lñô ñô ð õ
 # ;Ñ/Ô/ˆÔÝ˜TœZ×1Ò1°+Ñ>Ô>Ñ?Ô?ˆŒØ ˆÔàŒH�^�t”|�^Ô$ˆØ�OŠO˜AÑÔˆÝ˜a Ñ*Ô*ˆØˆŒˆˆr   c                 ó   — | j         S r:   )rc   rF   s    r   rh   zPrivateKey.private_key¹   s   € àÔ!Ð!r   c                 óz   — t          |t          ¦  «        r | j        |j        k    o| j        |j        k    S t          S r:   )r;   r`   r+   rc   r<   r=   s     r   r?   zPrivateKey.__eq__½   s@   € Ý�e�ZÑ(Ô(ð 	à”
˜eœkÒ)ð >ØÔ&¨%Ô*=Ò=ðõ Ðr   c                 ó   — | |k     S r:   rA   r=   s     r   rB   zPrivateKey.__ne__Å   rC   r   c                 óx  — | 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                              ¦   «         ¦  «        }|dz  dk    rd|d<   |d	xx         d
z  cc<   n#|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×ÒÑ!Ô!ˆØ�Š6ˆ6ØˆEˆEØ�!ŠVˆVØˆEˆEåÐEÑFÔFÐFØˆAˆˆŒ�Q˜%‘Z 1Ñ$Ð%Ñ%ˆˆ‰õ �t”z—|’|‘~”~Ñ&Ô&ˆØˆq‰5�AŠ:ˆ:ØˆC�‰GØ�ˆGˆGŒG�t‰OˆGˆG‰Gˆ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         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Ü   sV   € àÔð 	%ØÔ$Ð$à”~¨¬Ñ0ˆå%ØŒN˜L×1Ò1Ñ3Ô3°\ñ
ô 
ˆÔð Ô Ð r   c                 óœ  — t          |¦  «        }|                      ¦   «                              ¦   «         }| j        | j        d…         }t	          ¦   «         }| j        t          k    rt	          d¦  «        }t          | j                             ||z   |z   ¦  «        d¦  «        }| j	        |z   
                    ¦   «         }t          | j                             ||z   |z   |z   ¦  «        d¦  «        }|| j	                             ¦   «         z  }||| j        z  z   | 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ŒkˆØŒ:�Ò$Ð$ÝÐ5Ñ6Ô6ˆCå˜œ×-Ò-¨c°F©l¸TÑ.AÑBÔBÀHÑMÔMˆØŒ^˜aÑ×)Ò)Ñ+Ô+ˆå˜œ×-Ò-¨c°A©g¸©k¸DÑ.@ÑAÔAÀ8ÑLÔLˆØ	ˆTŒ^×!Ò!Ñ#Ô#Ñ#ˆà��T”X‘Ñ ¤×!5Ò!5Ñ!7Ô!7Ñ7ˆà•<  4¤<°Ñ:Ô:Ñ:Ð:r   N)rY   rZ   r[   r\   r8   r]   rh   r?   rB   rf   r6   r|   rA   r   r   r`   r`   ¢   s�   € € € € € ØBÐBðð ð ð( ð"ð "ñ „Xð"ðð ð ð!ð !ð !ðð ð ð(!ð !ð !ð;ð ;ð ;ð ;ð ;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�[€Ø€Ø€SØÐð	ñô ñô €ð €à	€cØÐð	ñô ñô €ð 
€cØÐð	ñô ñô €ð ˆ�VÐ0Ñ0€ð>ð >ð >ð (�Ô'¨¨B°°B¸Ñ@Ô@€Ø.�MÔ.Ø�3˜˜Q  c¡	¨B¡°¸dðñ ô Ð ð ˆ�Vˆa�‰f�_�qÑ€Ø€Øˆb�[€Ø€à	€cØÐð	ñô ñô €ð 
€cØÐð	ñô ñô €ð ˆ�VÐHÑH€ð ð  ð  ð &ˆmÔ% b¨"¨b°"°iÑ@Ô@€Ø,�-Ô,Ø��c˜1˜c C™i¨"™n¨b¸Dðñ ô €ð
Lð Lð Lð Lð L�ñ Lô Lð Lð^Z;ð Z;ð Z;ð Z;ð Z;�ñ Z;ô Z;ð Z;ð Z;ð Z;r   