U
    hK                      @   sj   d Z ddlZddddddd	d
dddddddddddddddddddddd d!d"g Zd#d$ Zed%krfe  dS )&zFpasslib.utils.scrypt._gen_files - meta script that generates _salsa.py    N)   r         )   r   r   	   )r   r   r      )r   r   r      )r         r   )r   r   r	   r   )r
   r   r   r   )r	   r
   r   r   )   
      r   )   r   r   r   )r   r   r   r   )r   r   r   r   )         r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r
   r   r   r   )r   r
   r   r   )r   r   r
   r   )r   r   r   r   )r   r	   r   r   )r   r   r	   r   )r   r   r   r   )r	   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                  C   s  t jt jtd} t| d}|j}dd tdD }d}d}d}d	d
d tdD }d	|}t||d}	|d|	  t	t
D ]P\}
\} }}}|dt|
||| || || ||  dd| > d |d| d
  q|d tdD ]}
||d|
|
|
f   q|d|	  d S )Nz	_salsa.pywc                 S   s   g | ]}d | qS )zv%d .0ir   r   F./venv/lib/python3.8/site-packages/passlib/crypto/scrypt/_gen_files.py
<listcomp>S   s     zmain.<locals>.<listcomp>   z    z        z            z, c                 s   s   | ]}d | V  qdS )zb%dNr   r   r   r   r   	<genexpr>X   s     zmain.<locals>.<genexpr>)VLISTTLISTa  """passlib.utils.scrypt._salsa - salsa 20/8 core, autogenerated by _gen_salsa.py"""
#=================================================================
# salsa function
#=================================================================

def salsa20(input):
    """apply the salsa20/8 core to the provided input

    :args input: input list containing 16 32-bit integers
    :returns: result list containing 16 32-bit integers
    """

    %(TLIST)s = input
    %(VLIST)s = \
        %(TLIST)s

    i = 0
    while i < 4:
z        # salsa op %(idx)d: [%(it)d] ^= ([%(is1)d]+[%(is2)d])<<<%(rot1)d
        t = (%(src1)s + %(src2)s) & 0xffffffff
        %(dst)s ^= ((t & 0x%(rmask)08x) << %(rot1)d) | (t >> %(rot2)d)

r
       )
idxZis1Zis2itZsrc1Zsrc2dstZrmaskZrot1Zrot2z        i += 1

zb%d = (b%d + v%d) & 0xffffffff
z
    return %(TLIST)s

#=================================================================
# eof
#=================================================================
)ospathjoindirname__file__filewriterangedict	enumerate
_SALSA_OPS)targetZfhr'   ZVNAMESZPADZPAD2ZPAD3r   r   kwdsr   Zsource1Zsource2rotater   r   r   mainN   sJ    

   r/   __main__)__doc__r!   r+   r/   __name__r   r   r   r   <module>   sJ   AG