§
    qŠtj‹  ã                   ó¶   — d Z 	 ddlZ ej        d¦  «                             d¦  «         d„ ZdS # eef$ r! ddlmZm	Z	 d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZY dS w xY w)z5
Implementation of the SHAKE-256 algorithm for Ed448
é    NÚshake256é@   c                 óR   — t          j        d| ¦  «                             |¦  «        S )Nr   )ÚhashlibÚnewÚdigest©ÚmsgÚoutlens     úI/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/ecdsa/_sha3.pyÚ	shake_256r   
   s"   € ÝŒ{˜: sÑ+Ô+×2Ò2°6Ñ:Ô:Ð:ó    é   )Úbytes_to_intÚint_to_bytesc                 ó$   — t          | d¬¦  «        S )NÚlittle©Ú	byteorder)r   )Úss    r   Ú_from_ler      s   € Ý˜A¨Ð2Ñ2Ô2Ð2r   c                 ó$   — | |z  | d|z
  z	  z  dz  S )Nr   l   ÿÿÿÿ © )ÚxÚbs     r   Ú_rolr      s   € Ø�a‘˜A " q¡&™MÑ*¨yÑ9Ð9r   c                 óî  — g d¢}g d¢}g d¢}t          dd¦  «        D �]Ö}dgdz  }dgdz  }t          dd¦  «        D ]}||dz  xx         | |         z  cc<   Œt          dd¦  «        D ]0}||dz   dz           t          ||d	z   dz           d	¦  «        z  ||<   Œ1t          dd¦  «        D ]}| |xx         ||dz           z  cc<   Œt          dd¦  «        D ]!}t          | |         ||         ¦  «        | |<   Œ"| |d                  }t          dt          |¦  «        d	z
  ¦  «        D ]}| ||d	z                     | ||         <   Œ|| |d
         <   t          ddd¦  «        D ]~}| |         | |d	z            | |dz            | |dz            | |dz            | |         | |d	z            g}t          dd¦  «        D ])}	||	         ||	d	z             ||	dz            z  z  | ||	z   <   Œ*Œ| dxx         ||         z  cc<   �ŒØd S )N)r   r   é>   é   é   é$   é,   é   é7   é   é   é
   é+   é   é'   é)   é-   é   é   é   é   é   é=   é8   é   )r   r#   é	   é   r4   r%   r1   é   é   é   é   r-   é   é   r.   r/   é   é   r&   r0   é   é   é   r'   )r   i‚€  l   Š       l          i‹€  ì       ì   �      l   	       éŠ   éˆ   l   	   l   
    l   ‹   l   ‹        l   ‰       l          l          l   €        i
€  l   
       rC   l   €       rB   l         r   r<   r>   r)   r;   r   éÿÿÿÿr1   r&   )Úranger   Úlen)
r   Ú	ROTATIONSÚPERMUTATIONÚRCÚrndÚcÚdÚiÚtÚjs
             r   Ú_sha3_transformrR      s‘  € ð
ð 
ð 
ˆ	ð6
ð 
ð 
ˆð4
ð 
ð 
ˆõ6 ˜˜B‘<”<ð  	ñ  	ˆCà��a‘ˆAØ��a‘ˆAÝ˜1˜b‘\”\ð !ð !�Ø�!�a‘%��”˜A˜aœDÑ ��‘�Ý˜1˜a‘[”[ð @ð @�Ø˜!˜a™% 1™”~­¨Q°°A±¸©{¬^¸QÑ(?Ô(?Ñ?��!‘�Ý˜1˜b‘\”\ð !ð !�Ø�!��”˜˜!˜a™%œÑ ��‘�å˜1˜b‘\”\ð 0ð 0�Ý˜A˜aœD )¨A¤,Ñ/Ô/��!‘�à�+˜a”.Ô!ˆAÝ˜1�c +Ñ.Ô.°Ñ2Ñ3Ô3ð :ð :�Ø$% k°!°a±%Ô&8Ô$9��+˜a”.Ñ!Ð!Ø!"ˆAˆk˜"ŒoÑå˜1˜b !‘_”_ð Að A�à�a”DØ�a˜!‘e”HØ�a˜!‘e”HØ�a˜!‘e”HØ�a˜!‘e”HØ�a”DØ�a˜!‘e”Hð�õ ˜q !™œð Að A�AØ  œt¨¨1¨q©5¬¨	°a¸¸A¹´hÑ'?Ñ@�A�a˜!‘e‘H�HðAð ˆaˆDˆDŒD�B�s”G‰OˆDˆD‰D‰DðA 	ð  	r   c           
      ó¨   — t          dt          |¦  «        dz  ¦  «        D ]0}| |xx         t          |d|z  d|z  dz   …         ¦  «        z  cc<   Œ1d S )Nr   r/   )rG   rH   r   )r   r   rQ   s      r   Ú_reinterpret_to_words_and_xorrT   Ž   se   € Ý�q�#˜a™&œ& A™+Ñ&Ô&ð 	3ð 	3ˆAØˆaˆDˆDŒD•H˜Q˜q 1™u q¨1¡u¨q¡yÐ0Ô1Ñ2Ô2Ñ2ˆDˆD‰DˆDð	3ð 	3r   c                 ó˜   — t          ¦   «         }t          dt          | ¦  «        ¦  «        D ]}|t          | |         dd¬¦  «        z  }Œ|S )Nr   r/   r   r   )Ú	bytearrayrG   rH   r   )ÚwÚmprQ   s      r   Ú_reinterpret_to_octetsrY   “   sN   € Ý‰[Œ[ˆÝ�q�#˜a™&œ&Ñ!Ô!ð 	<ð 	<ˆAØ•,˜q œt Q°(Ð;Ñ;Ô;Ñ;ˆBˆBØˆ	r   c                 óÞ  — d|z  }dgdz  }d}t          | ¦  «        |z  }t          d|¦  «        D ]1}t          || |||z   …         ¦  «         ||z  }t          |¦  «         Œ2t	          | |d…         ¦  «        }	|	                     |¦  «         t          |	¦  «        |k     r(|	                     d¦  «         t          |	¦  «        |k     °(|	t          |	¦  «        dz
  xx         dz  cc<   t          ||	¦  «         t          |¦  «         t	          ¦   «         }
t          |
¦  «        |k     r<|
t          |d|…         ¦  «        z  }
t          |¦  «         t          |
¦  «        |k     °<|
d|…         S )z!Semi-generic SHA-3 implementationr/   r   r)   Nr   é€   )rH   rG   rT   rR   rV   ÚappendrY   )r
   Úr_wÚo_pÚe_bÚr_br   ÚidxÚblocksrO   ÚmÚouts              r   Ú	_sha3_rawre   ™   sm  € à�#‰gˆØˆC�"‰HˆàˆÝ�S‘”˜S‘ˆÝ�q˜&Ñ!Ô!ð 	ð 	ˆAÝ)¨!¨S°°s¸S±y°Ô-AÑBÔBÐBØ�3‰JˆCÝ˜AÑÔÐÐå�c˜#˜$˜$”iÑ Ô ˆØ	�Š�‰ŒˆÝ�!‰fŒf�sŠlˆlØ�HŠH�Q‰KŒKˆKõ �!‰fŒf�sŠlˆlà	�#ˆa‰&Œ&�1‰*ˆˆŒ˜Ñˆˆ‰å% a¨Ñ+Ô+Ð+Ý˜ÑÔÐå‰kŒkˆÝ�#‰hŒh˜ŠnˆnØÕ)¨!¨D¨S¨D¬'Ñ2Ô2Ñ2ˆCÝ˜AÑÔÐõ �#‰hŒh˜Šnˆnð �4�C�4ŒyÐr   c                 ó&   — t          | dd|¦  «        S )Nr?   é   )re   r	   s     r   r   r   ´   s   € Ý˜˜b " fÑ-Ô-Ð-r   )Ú__doc__r   r   r   r   Ú	TypeErrorÚ
ValueErrorÚ_compatr   r   r   r   rR   rT   rY   re   r   r   r   ú<module>rl      s  ððð ðp.Ø€N€N€Nà€G„K�
ÑÔ×"Ò" 2Ñ&Ô&Ð&ð;ð ;ð ;ð ;ð ;øð 	�:Ðð h.ð h.ð h.à3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð3ð 3ð 3ð:ð :ð :ðqð qð qðh3ð 3ð 3ð
ð ð ðð ð ð6.ð .ð .ð .ð .ð .ðOh.øøøs   „*0 °$AÁA