
    kfh                     n   d Z d                                ZdZddlmZ  G d d          Zdddd	dd
dd	d
d
dd	dddd	dddd	gZd Zd Z	e
dk    r`dZeD ]]Z eed                                       ed                   Z eed                                       ed                   Zedz  Z\dS dS )z
Arciv Stream  ciphering
zArcIV encode decodez1.0    )	isUnicodec                   *    e Zd ZdZd Zd Zd Zd ZdS )ArcIVz
	performs 'ArcIV' Stream Encryption of S using key
	Based on what is widely thought to be RSA's ArcIV algorithm.
	It produces output streams that are identical.

	NB there is no separate decoder arciv(arciv(s,key),key) == s
	c                 <    || _         |                                  d S )N)_keyreset)selfkeys     S/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/lib/arciv.py__init__zArcIV.__init__   s    $)**,,,,,    c                    | j         }t          |          r|                    d          }t          t	          d                    }t          t	          d                    }t          |          }|D ]}|||z           dz  ||<   d}t	          d          D ]0}|||         z   ||         z   dz  }||         ||         c||<   ||<   1|ddc| _        | _        | _        dS )z&restore the cipher to it's start stateutf8   r   N)	r   r   encodelistrangelen_sbox_i_j)r	   r
   sboxklkijs          r   r   zArcIV.reset   s     		#s^^-3::f--S	eCjj		$
5::!
3xx"  a
a"f+
1Q44
 !:: ' 'a	$q'	!A$#11gtAw47DGG!%q!$*dgtwwwr   c                     | j         | j        | j        }}}t          |t                    r"t          |                    d                    n-t          |t                    rt          |          n	|dd         }t          |          }d}||k     rl|dz   dz  x| _        }|||         z   dz  x| _        }||         ||         c||<   ||<   ||         |||         ||         z   dz           z  ||<   |dz  }||k     l|S )zn
		return the list of encoded bytes of B, B might be a string or a
		list of integers between 0 <= i <= 255
		r   Nr      r   )	r   r   r   
isinstancestrr   r   bytesr   )r	   Br   r   r   Cnps           r   _encodezArcIV._encode*   s   
 z47DG1$ *1S 1 1ad188F:aPUCVCV8`Q\]^_^_^_\`!	!ff!!	!a%347Qd1g+$$47Q1gtAw47DG
A$tAwa(C/0
01Q461 	
! 
(r   c                 F    t          |                     |                    S )zArcIV encode string S)r!   r&   )r	   Ss     r   r   zArcIV.encode?   s    	t||A		r   N)__name__
__module____qualname____doc__r   r   r&   r    r   r   r   r   	   sZ           , , ,*  *         r   r   s   #Egs   uŖ)r
   inputoutputs           s   tKys   A7]:s   #Es
             s
   ֡A<8߽as   s   uJ	xJR3I=vS4IwǊ+f]S՜&ĐmkGZDz^Ngy
2DOw&Vu ~Ī;B1zCݥ
m1xNIZΐrG_b	;S/GP#q2}DD2sg/]DgPuKpw#k[tG9mbt!=.Dn5Nw=5X\	)/fK@Uo')BdE]SL㢷UW&Rn#S[ٜs]=58g-{꥕ؿo	l lzb>L=3> UW"ԸiI՝NyXkKjtԛKK$7,U5I z=ṟ͆`:ԫ4=BXU@h<(MLXq7Tq&Ԟ'U@c                 F    t          |                              |           S )z.One-line shortcut for making an encoder objectr   r   textr
   s     r   r   r      s    c

$r   c                 F    t          |                              |           S )zOne-line shortcut for decodingr1   r2   s     r   decoder5      s     	c

$r   __main__r
   r.   r/   r   N)r,   split__all____version__reportlab.lib.utilsr   r   _TESTSr   r5   r)   r   tor-   r   r   <module>r>      s~    	"'')) ) ) ) ) ) )8  8  8  8  8  8  8  8 v 
-./	 	 
-./  
-./  
67  
-3h3mj j1CJ          
 Z
 	 	QeAeHooQwZ((!eAeHooQx[))!q&!! 	 	r   