
    Tf                         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     =/var/www/html/env/lib/python3.11/site-packages/ecdsa/_sha3.py	shake_256r   
   s"    {:s++226:::       )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1b\\ ! !!a%AaD 1a[[ @ @!a%1~QA{^Q(?(??!1b\\ ! !!!a% 1b\\ 0 0AaD)A,//!+a.!A1c+..233 : :$%k!a%&8$9+a.!!!"Ak"o1b!__ A AaDa!eHa!eHa!eHa!eHaDa!eH q! A AA t1q5	aAh'?@Aa!eHHA aDDDBsGODDDDA 	  	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 	3AaDDDHQq1uq1uqy01222DDDD	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tQ(;;;;BB	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sSy-ABBB3JCAc#$$i  	!ffsllHHQKKK !ffsll	#a&&1*%a+++kk#hhnn)!DSD'222CA #hhnn 4C4y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.NNNGK
""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