
    Kwgh                     *   d Z dj                         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(  rIdZeD ]A  Z eed         j                  ed         Z eed         j                  ed         Zedz  ZC yy)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y)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                 2    || _         | j                          y )N)_keyreset)selfkeys     J/var/www/horilla/myenv/lib/python3.12/site-packages/reportlab/lib/arciv.py__init__zArcIV.__init__   s    $)**,    c                 x   | j                   }t        |      r|j                  d      }t        t	        d            }t        t	        d            }t        |      }|D ]  }|||z     dz  ||<    d}t	        d      D ]$  }|||   z   ||   z   dz  }||   ||   c||<   ||<   & |ddc| _        | _        | _        y)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	eCj	$
5:!
3x" a
a"f+
1Q4 !: 'a	$q'	!A$#11gtAw47DG' "&q!$*dgtwr   c                    | j                   | j                  | j                  }}}t        |t              rt        |j                  d            nt        |t              rt        |      n|dd }t        |      }d}||k  rW|dz   dz  x| _        }|||   z   dz  x| _        }||   ||   c||<   ||<   ||   |||   ||   z   dz     z  ||<   |dz  }||k  rW|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    
 zz477DGG1$ *1S 1d188F:aPUCVQ\]^_\`!	!f!!	!a%347Qd1g+$$47Q1gtAw47DG
A$tAwa(C/0
01Q461 	
! 
(r   c                 6    t        | j                  |            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   	   s    ,** 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                 6    t        |      j                  |       S )z.One-line shortcut for making an encoder objectr   r   textr
   s     r   r   r      s    c
$r   c                 6    t        |      j                  |       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 v 
-./	 
-./ 
-./ 
67 
-3h3mj1CJ  
 Z
 	QAeHoQwZ(!AeHoQx[)!q&!	 r   