o
    œÀvh  ã                   @   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)Ú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   ú^/var/www/html/hyperkenya/venv/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)   r0   Úivc                 C   r&   r   r'   ©r   r1   r   r   r   r   Úaes_cbc_encryptX   r)   r3   c                 C   r&   r   r'   r2   r   r   r   Úaes_cbc_decrypt\   r)   r4   N)Úpypdf._crypt_providers._baser   Úpypdf.errorsr   r(   Úcrypt_providerr   r%   r   r,   r.   r/   r0   r3   r4   r   r   r   r   Ú<module>   s   