o
     ªZh  ã                   @   sÐ   d dl mZ d dlmZ dZdZG dd„ deƒZG dd„ deƒZd	ed
edefdd„Z	d	ed
edefdd„Z
d	ed
edefdd„Zd	ed
edefdd„Zd	eded
edefdd„Zd	eded
edefdd„ZdS )é    )Ú	CryptBase)ÚDependencyErrorz/cryptography>=3.1 is required for AES algorithm)Zlocal_crypt_fallbackz0.0.0c                   @   óB   e Zd Zdeddfdd„Zdedefdd„Zdedefd	d
„ZdS )ÚCryptRC4ÚkeyÚreturnNc                 C   sh   t tdƒƒ| _d}tdƒD ]$}|| j|  ||t|ƒ   d }| j| | j| | j|< | j|< qd S )Né   r   )Ú	bytearrayÚrangeÚsÚlen)Úselfr   ÚjÚi© r   úW/var/www/html/lang_env/lib/python3.10/site-packages/pypdf/_crypt_providers/_fallback.pyÚ__init__&   s   "$þzCryptRC4.__init__Údatac                 C   s    t | jƒ}dd„ tt|ƒƒD ƒ}d\}}tt|ƒƒD ]1}|d d }|||  d }|| || ||< ||< ||| ||  d  }|| |A ||< qt|ƒS )Nc                 S   s   g | ]}d ‘qS )r   r   )Ú.0Ú_r   r   r   Ú
<listcomp>/   s    z$CryptRC4.encrypt.<locals>.<listcomp>)r   r   é   r   )r	   r   r
   r   Úbytes)r   r   r   Úoutr   r   ÚkÚxr   r   r   Úencrypt-   s   
zCryptRC4.encryptc                 C   s
   |   |¡S ©N)r   ©r   r   r   r   r   Údecrypt9   s   
zCryptRC4.decrypt©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   %   s    r   c                   @   r   )ÚCryptAESr   r   Nc                 C   s   d S r   r   )r   r   r   r   r   r   >   s   zCryptAES.__init__r   c                 C   ó   t tƒ‚r   ©r   Ú_DEPENDENCY_ERROR_STRr   r   r   r   r   A   ó   zCryptAES.encryptc                 C   r%   r   r&   r   r   r   r   r   D   r(   zCryptAES.decryptr    r   r   r   r   r$   =   s    r$   r   r   r   c                 C   ó   t | ƒ |¡S r   )r   r   ©r   r   r   r   r   Úrc4_encryptH   ó   r+   c                 C   r)   r   )r   r   r*   r   r   r   Úrc4_decryptL   r,   r-   c                 C   r%   r   r&   r*   r   r   r   Úaes_ecb_encryptP   r(   r.   c                 C   r%   r   r&   r*   r   r   r   Úaes_ecb_decryptT   r(   r/   Úivc                 C   r%   r   r&   ©r   r0   r   r   r   r   Úaes_cbc_encryptX   r(   r2   c                 C   r%   r   r&   r1   r   r   r   Úaes_cbc_decrypt\   r(   r3   N)Zpypdf._crypt_providers._baser   Zpypdf.errorsr   r'   Zcrypt_providerr   r$   r   r+   r-   r.   r/   r2   r3   r   r   r   r   Ú<module>   s   