o
    žªj6  ã                   @   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                   @   óL   e Zd Zdeddfdd„Zdedefdd„Zd	d
œde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   úf/var/www/html/fyndo/pharma/fyndo/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.encryptT©Ústrictr   c                C   s
   |   |¡S ©N)r   ©r   r   r   r   r   r   Údecrypt9   s   
zCryptRC4.decrypt©Ú__name__Ú
__module__Ú__qualname__r   r   r   Úboolr"   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_STR)r   r   r   r   r   r   A   ó   zCryptAES.encryptTr   r   c                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   r0   r1   c                 C   r)   r    r*   r.   r   r   r   Úaes_ecb_encryptP   r,   r2   c                 C   r)   r    r*   r.   r   r   r   Úaes_ecb_decryptT   r,   r3   Úivc                 C   r)   r    r*   ©r   r4   r   r   r   r   Úaes_cbc_encryptX   r,   r6   c                 C   r)   r    r*   r5   r   r   r   Úaes_cbc_decrypt\   r,   r7   N)Úpypdf._crypt_providers._baser   Úpypdf.errorsr   r+   Úcrypt_providerr   r(   r   r/   r1   r2   r3   r6   r7   r   r   r   r   Ú<module>   s   