
    Y]Z                         d dl Z 	 d dlmZmZmZ d dlmZ dZn# e$ r dZY nw xY w G d de	          Z
 G d d	e	          Zere
ZdS eZdS )
    N)Cipher
algorithmsmodes)default_backendTFc                       e Zd Zd Zd ZdS )_CryptographyARC4c                     t          j        |          }t          |d t                                }|                                | _        d S )N)modebackend)r   ARC4r   r   	encryptor
_encryptor)selfkeyalgociphers       //usr/lib/python3/dist-packages/ntlm_auth/rc4.py__init__z_CryptographyARC4.__init__   sB    s##41B1BCCC **,,    c                 6    | j                             |          S )N)r   update)r   values     r   r   z_CryptographyARC4.update   s    %%e,,,r   N)__name__
__module____qualname__r   r    r   r   r   r      s2        - - -
- - - - -r   r   c                   ,    e Zd ZdZdZdZd Zd Zd ZdS )_PythonARC4Nr   c                    g }t          t          |                    D ]=}t          j        d|||dz                      d         }|                    |           >d t          d          D             | _        d}t          d          D ]Y}|| j        |         z   ||t          |          z           z   dz  }| j        |         | j        |         c| j        |<   | j        |<   Zd S )NB   r   c                     g | ]}|S r   r   ).0ns     r   
<listcomp>z(_PythonARC4.__init__.<locals>.<listcomp>'   s    ,,,Aa,,,r      )rangelenstructunpackappendstate)r   r   	key_bytesikey_bytejs         r   r   z_PythonARC4.__init__   s    	s3xx 	' 	'A}S#aAg,77:HX&&&& -,s,,,
s 	H 	HATZ]"Yq3y>>/A%BBcIA+/:a=$*Q-(DJqM4:a==	H 	Hr   c                 >   g }|                                  }t          t          |                    D ]O}t          j        d|||dz                      d         }|t          |          z  }|                    |           Pt          t          |                    S )Nr    r!   r   )	_random_generatorr'   r(   r)   r*   nextr+   bytes	bytearray)r   r   chars
random_genr.   byteupdated_bytes          r   r   z_PythonARC4.update-   s    ++--
s5zz"" 	' 	'A=eAa!eGn55a8D$z"2"22LLL&&&&Yu%%&&&r   c              #   Z  K   	 | j         dz   dz  | _         | j        | j        | j                  z   dz  | _        | j        | j                 | j        | j                  c| j        | j         <   | j        | j        <   | j        | j        | j                  | j        | j                 z   dz           V  )NTr!   r&   )r.   r0   r,   )r   s    r   r2   z_PythonARC4._random_generator6   s      	NfqjC'DFftz$&11S8DF
46"DJtv$6 3DJtv
46 2*dj04:df3EELMMMM	Nr   )	r   r   r   r,   r.   r0   r   r   r2   r   r   r   r   r      sX        E	A	AH H H' ' 'N N N N Nr   r   )r)   &cryptography.hazmat.primitives.ciphersr   r   r   cryptography.hazmat.backendsr   HAS_CRYPTOGRAPHYImportErrorobjectr   r   r   r   r   r   <module>r@      s    PPPPPPPPPP<<<<<<   - - - - - - - -#N #N #N #N #N& #N #N #NL  DDDDDDs    ##