o
    CDi                      @   sZ   d dl m Z  G dd dZdd Zdd Zdd	 Zd
d Zdd Zdd Zdd ZeZ	dS )   )U32c                   @   sR   e Zd ZdZdZdZdZd\ZZZ	g Z
dd Zdd Zdd Zd	d
 Zdd ZdS )MD4N)NNNc                 C   sZ   t d| _t d| _t d| _t d| _t dt dt d| _| _| _dgd | _d S )Ni#Egl   +_ l   \u1 ivT2    @   )	r   ABCDcountlen1len2buf)self r   F/var/www/Datamplify/venv/lib/python3.10/site-packages/smb/utils/md4.py__init__(   s   



"zMD4.__init__c                 C   s   d| j  | j | j | j f }|d| j | j | j f  }tdD ]}tdD ]}|dt	| j
||    }q0|d }q*|S )Nz#A = %s, 
B = %s, 
C = %s, 
D = %s.
z$count = %s, 
len1 = %s, 
len2 = %s.
      z%4s 
)r   __repr__r   r   r	   r
   r   r   rangehexr   )r   rijr   r   r   r   3   s   ($
zMD4.__repr__c                 C   sf   t  }| j|_| j|_| j|_| j|_| j|_| j|_| j|_tt	| jD ]
}| j
| |j
|< q&|S N)newr   r   r   r   r   r	   r
   r   intr   )r   destr   r   r   r   	make_copy=   s   zMD4.make_copyc                 C   s  t |tr
t|}ndd |D }tt|}t| j|d>  t| jk r-| jtd | _| j|d>  | _| j|d?  | _td}d}t|dkrdt| j t|k r_tdt| j }n|}t	t|D ]}|||  | j
|t| j < qg| j| | _|| }|t| }t| jdkrtd| _g }d}t	dD ]1}|t| j
| t| j
|d  d	>  t| j
|d
  d>  t| j
|d  d>   |d }q| j}	| j}
| j}| j}t|	|
||dd|}	t||	|
|dd|}t|||	|
d
d|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||d	d|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|dd|}t|||	|
d	d|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||d
d|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|d	d|}t|||	|
dd|}t|
|||	dd|}
t|	|
||d
d|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
t|	|
||dd|}	t||	|
|dd|}t|||	|
dd|}t|
|||	dd|}
| j|	 | _| j|
 | _| j| | _| j| | _t|dksJd S d S )Nc                 S   s   g | ]}t |qS r   )ord).0r   r   r   r   
<listcomp>R       zMD4.update.<locals>.<listcomp>   r      r   r   r            r                  	   
               )
isinstancebyteslistr   lenr   r   r   r
   r   r   appendr   r   r   r	   f1f2f3)r   strr   ilenLbufposr   Xr   r   r   r   r	   r   r   r   updateN   s   

*.
&
z
MD4.updatec                 C   s  dgd }dgd }dgd }d|d< t dt dt d}}}|  }|j}|j}dt| jkr>t dt| j d }n	t dt| j }|t|d t|  |t d@ |d< |d? t d@ |d< |d? t d@ |d	< |d
? t d@ |d< |t d@ |d< |d? t d@ |d< |d? t d@ |d< |d
? t d@ |d< |t| |jt d@ |d< |jd? t d@ |d< |jd? t d@ |d	< |jd
? t d@ |d< |j	t d@ |d< |j	d? t d@ |d< |j	d? t d@ |d< |j	d
? t d@ |d< |j
t d@ |d< |j
d? t d@ |d< |j
d? t d@ |d< |j
d
? t d@ |d< |jt d@ |d< |jd? t d@ |d< |jd? t d@ |d< |jd
? t d@ |d< t|S )Nr   r   r&   r      8      r   r'   r(   r$   r   r,   r-   r)   r.   r/   r*   r0   r1   r2   r3   )r   r   r   r   r   r
   rA   r5   r   r   r   r	   )r   resspaddingpadlenoldlen1oldlen2tempr   r   r   digest   sJ   


&z
MD4.digest)__name__
__module____qualname__r   r   r   r	   r
   r   r   r   r   r   r   rA   rL   r   r   r   r   r      s    

ar   c                 C   s   | |@ |  |@ B S r   r   xyzr   r   r   F   s    rT   c                 C   s   | |@ | |@ B ||@ B S r   r   rP   r   r   r   G   s    rU   c                 C   s   | |A |A S r   r   rP   r   r   r   H   s    rV   c                 C   s   | |> | d| ? B S )N    r   )rQ   nr   r   r   ROL   r#   rY   c                 C   s   t | t||| ||  |S r   )rY   rT   abcdkrF   r@   r   r   r   r9      s    r9   c                 C   &   t | t||| ||  td |S )NiyZ)rY   rU   r   rZ   r   r   r   r:         & r:   c                 C   r`   )Nin)rY   rV   r   rZ   r   r   r   r;      ra   r;   N)
r   r   rT   rU   rV   rY   r9   r:   r;   r   r   r   r   r   <module>   s    A