
    є j6                         d dl mZ d dlmZ dZdZ G d de          Z G d de          Zd	ed
edefdZ	d	ed
edefdZ
d	ed
edefdZd	ed
edefdZd	eded
edefdZd	eded
edefdZdS )    )	CryptBase)DependencyErrorz/cryptography>=3.1 is required for AES algorithm)local_crypt_fallbackz0.0.0c                   H    e Zd ZdeddfdZdedefdZddded	edefd
ZdS )CryptRC4keyreturnNc                    t          t          d                    | _        d}t          d          D ]Y}|| j        |         z   ||t          |          z           z   dz  }| j        |         | j        |         c| j        |<   | j        |<   Zd S )N   r   )	bytearrayrangeslen)selfr   jis       tC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pypdf/_crypt_providers/_fallback.py__init__zCryptRC4.__init__&   s    5::&&s 	8 	8ATVAYQS\!22c9A#'6!9dfQi DF1Itvayy	8 	8    datac                    t          | j                  }d t          t          |                    D             }d\  }}t          t          |                    D ]W}|dz   dz  }|||         z   dz  }||         ||         c||<   ||<   |||         ||         z   dz           }||         |z  ||<   Xt	          |          S )Nc                     g | ]}d S )r    ).0_s     r   
<listcomp>z$CryptRC4.encrypt.<locals>.<listcomp>/   s    +++Qq+++r   )r   r      r   )r   r   r   r   bytes)r   r   r   outr   r   kxs           r   encryptzCryptRC4.encrypt-   s    df++%D		**+++1s4yy!! 	! 	!AQ#AQqTS A1qtJAaD!A$1Q4!A$;#%&A!Wq[CFFSzzr   Tstrictr$   c                ,    |                      |          S N)r"   r   r   r$   s      r   decryptzCryptRC4.decrypt9   s    ||D!!!r   __name__
__module____qualname__r   r   r"   boolr(   r   r   r   r   r   %   s        8E 8d 8 8 8 8
E 
e 
 
 
 
 6: " " "E "d "e " " " " " "r   r   c                   H    e Zd ZdeddfdZdedefdZddded	edefd
ZdS )CryptAESr   r	   Nc                     d S r&   r   )r   r   s     r   r   zCryptAES.__init__>   s    r   r   c                 *    t          t                    r&   r   _DEPENDENCY_ERROR_STR)r   r   s     r   r"   zCryptAES.encryptA       3444r   Tr#   r$   c                *    t          t                    r&   r2   r'   s      r   r(   zCryptAES.decryptD   r4   r   r)   r   r   r   r/   r/   =   s        E d    5E 5e 5 5 5 5 6: 5 5 5E 5d 5e 5 5 5 5 5 5r   r/   r   r   r	   c                 F    t          |                               |          S r&   )r   r"   r   r   s     r   rc4_encryptr8   H       C==  &&&r   c                 F    t          |                               |          S r&   )r   r(   r7   s     r   rc4_decryptr;   L   r9   r   c                 *    t          t                    r&   r2   r7   s     r   aes_ecb_encryptr=   P       
/
0
00r   c                 *    t          t                    r&   r2   r7   s     r   aes_ecb_decryptr@   T   r>   r   ivc                 *    t          t                    r&   r2   r   rA   r   s      r   aes_cbc_encryptrD   X   r>   r   c                 *    t          t                    r&   r2   rC   s      r   aes_cbc_decryptrF   \   r>   r   N)pypdf._crypt_providers._baser   pypdf.errorsr   r3   crypt_providerr   r/   r   r8   r;   r=   r@   rD   rF   r   r   r   <module>rJ      s  8 3 2 2 2 2 2 ( ( ( ( ( (I  3" " " " "y " " "05 5 5 5 5y 5 5 5'U '% 'E ' ' ' ''U '% 'E ' ' ' '1 1e 1 1 1 1 11 1e 1 1 1 1 11 1E 1 15 1 1 1 11 1E 1 15 1 1 1 1 1 1r   