o
     ªZhÍ  ã                   @   s<  d dl Z d dlmZ d dlmZ d dlmZ zd dlmZ W n e	y-   d dlmZ Y nw d dl
mZ d dlmZmZ d dlmZ d	ef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 )é    N)Ú__version__)Úpadding)ÚAES)ÚARC4)ÚCipher)ÚCBCÚECB)Ú	CryptBaseÚcryptographyc                   @   ó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   s   t t|ƒd d| _d S ©N)Úmode)r   r   Úcipher©Úselfr   © r   ú[/var/www/html/lang_env/lib/python3.10/site-packages/pypdf/_crypt_providers/_cryptography.pyÚ__init__0   s   zCryptRC4.__init__Údatac                 C   ó   | j  ¡ }| |¡| ¡  S ©N)r   Ú	encryptorÚupdateÚfinalize)r   r   r   r   r   r   Úencrypt3   ó   
zCryptRC4.encryptc                 C   r   r   )r   Ú	decryptorr   r   )r   r   r   r   r   r   Údecrypt7   r   zCryptRC4.decrypt©Ú__name__Ú
__module__Ú__qualname__Úbytesr   r   r    r   r   r   r   r   /   s    r   c                   @   r   )ÚCryptAESr   r   Nc                 C   s   t |ƒ| _d S r   )r   Úalgr   r   r   r   r   =   s   zCryptAES.__init__r   c                 C   sX   t  d¡}t d¡ ¡ }| |¡| ¡  }t| jt	|ƒƒ}| 
¡ }|| |¡ | ¡  S )Né   é€   )ÚsecretsZtoken_bytesr   ÚPKCS7Úpadderr   r   r   r'   r   r   )r   r   ÚivÚpadr   r   r   r   r   r   @   s   
zCryptAES.encryptc                 C   sŒ   |d d… }|dd … }|s|S t |ƒd dkr(t d¡ ¡ }| |¡| ¡  }t| jt|ƒƒ}| 	¡ }| |¡| ¡  }|d |d  … S )Nr(   r   r)   éÿÿÿÿ)
Úlenr   r+   r,   r   r   r   r'   r   r   )r   r   r-   r.   r   r   Údr   r   r   r    I   s   zCryptAES.decryptr!   r   r   r   r   r&   <   s    	r&   r   r   r   c                 C   ó&   t t| ƒd d ¡ }| |¡| ¡  S r   )r   r   r   r   r   ©r   r   r   r   r   r   Úrc4_encrypt[   ó   r4   c                 C   r2   r   )r   r   r   r   r   ©r   r   r   r   r   r   Úrc4_decrypt`   r5   r7   c                 C   ó(   t t| ƒtƒ d ¡ }| |¡| ¡  S r   )r   r   r   r   r   r   r3   r   r   r   Úaes_ecb_encrypte   ó   r9   c                 C   r8   r   )r   r   r   r   r   r   r6   r   r   r   Úaes_ecb_decryptj   r:   r;   r-   c                 C   ó*   t t| ƒt|ƒd ¡ }| |¡| ¡  S r   )r   r   r   r   r   r   )r   r-   r   r   r   r   r   Úaes_cbc_encrypto   ó   r=   c                 C   r<   r   )r   r   r   r   r   r   )r   r-   r   r   r   r   r   Úaes_cbc_decryptt   r>   r?   )r*   r
   r   Zcryptography.hazmat.primitivesr   Z1cryptography.hazmat.primitives.ciphers.algorithmsr   Z/cryptography.hazmat.decrepit.ciphers.algorithmsr   ÚImportErrorZ+cryptography.hazmat.primitives.ciphers.baser   Z,cryptography.hazmat.primitives.ciphers.modesr   r   Zpypdf._crypt_providers._baser	   Zcrypt_providerr   r&   r%   r4   r7   r9   r;   r=   r?   r   r   r   r   Ú<module>   s*   ÿ